Webhosting: .htaccess - erlaubte Parameter?

  • Hallo zusammen,


    ich habe bein einem "Bestprice Classic"-Tarif eine eigene .htaccess im Webroot. Diese funktioniert grundsätzlich auch. Die 404 Fehlerseite wird bspw. aufgerufen. Nur habe ich das Gefühl, dass so einige Parameter nicht genommen werden / nicht aktiviert werden. Bspw. ist HSTS nicht aktiv, obwohl spezifiziert.


    Kann jemand über meine .htaccess drüber schauen und sagen, ob ich eine Fehler habe?


    Ich habe auch die Vermutung, das nicht alle Parameter im Webhosting-Tarif freigeschaltet sind. Gibt es da eine Auflistung?


    Das Wiki auf Seite https://www.netcup-wiki.de/wiki/Htaccess ist nicht sehr hilfreich. Über das WCP kann man auch .htaccess Parameter setzen, doch verwirrt mich das mehr als es hilft. Ich weiß bspw. nicht wo was da reinkopiert werden soll.


    Gruß

  • Mach zum Test die Gegenprobe: Schreibe eine Problemzeile einmal direkt ohne IfModule rundherum rein. Wenn der Befehl nicht erlaubt ist, wirst Du einen HTTP Error auslösen und eventuell im Errorlog mehr Details finden.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Mach zum Test die Gegenprobe: Schreibe eine Problemzeile einmal direkt ohne IfModule rundherum rein. Wenn der Befehl nicht erlaubt ist, wirst Du einen HTTP Error auslösen und eventuell im Errorlog mehr Details finden.

    Habe heute morgen mal intensiv rumgetestet. Also an der .htaccess liegt es nicht. Wenn ich alle IfModule entferne, klappt noch alles.


    Die Ursache, warum einige Sachen nicht gesetzt werden bzw. beim Browser ankommen ist der Reverse Proxy. Also die Kombination aus nginx und Apache. Dernginx scheint einige HTTP Header vom Apache zu entfernen.


    Wenn ich die Option:

    "Intelligente Bearbeitung statischer Dateien: Wenn ausgeschaltet, werden alle Abfragen statischer Dateien von Apache bearbeitet. Nginx wird Abfragen und Antworten dann ohne Modifikation weitergeben. Schalten Sie diese Option bitte nur zur Problembehebung aus."

    ausschalte werden die Header alle gesetzt (auch HSTS).


    Wenn ich Apache mit der Option:

    "Proxymodus: Nginx leitet Anfragen über Proxys an Apache weiter. Deaktivieren, um Apache nicht mehr zu verwenden."
    wird auch kein HSTS gesetzt (da natürlich keine .htaccess und Apache mehr läuft).


    Die erst genannte Option sollte man ja eigtl. nicht ausschalten. Aber warum? Mir wäre HSTS und andere Header wichtiger, als die Performance durch ein nginx Caching. Kann man nginx komplett abschalten bzw. den Apache und nginx so konfigurieren wie den Apache?


    Eine andere Option wäre noch über die Einstellung "Statische Dateien direkt durch nginx bedienen" einfach einen entrag mit "xxx" (leerer Eintrag geht nicht) zu machen und somit alle anderen Dateien vom Apache bedienen zu lassen. Was meint ihr?



  • Eine andere Option wäre noch über die Einstellung "Statische Dateien direkt durch nginx bedienen" einfach einen entrag mit "xxx" (leerer Eintrag geht nicht) zu machen und somit alle anderen Dateien vom Apache bedienen zu lassen. Was meint ihr?

    Das funktioniert leider doch nicht wie gewünscht. Da hatte der Browser noch was im Cache bzw. der Webserver hatte die EInstellungen noch nicht neu geladen.

  • Habe nun eine zurfriedenstellende Lösung gefunden. Über die manuellen PLESK Settings für Apache werde auch die Header von nginx gesetzt sodass folgendes unter MIME-Typen:


    Code
    'text/html; charset=UTF-8' .html
    'text/javascript; charset=UTF-8' .js
    'text/css; charset=UTF-8' .css
    'application/manifest+json; charset=UTF-8' .json
    application/font-woff2 .woff2
    application/font-woff .woff
    image/jpeg .jpeg .jpg .jpe

    und folgendes unter zusätzliche Header:

    Code
    Connection: keep-alive
    X-Content-Type-Options: nosniff
    Referrer-Policy: "origin-when-cross-origin"
    Strict-Transport-Security: "max-age=31536000; includeSubDomains; preload"

    dazuführt, dass HSTS aktiv ist und die weiteren Header auch gesetzt werden. Diese Sache habe ich nun zusätzlich zur .htaccess auch nun dort eingefügt.


    Header entfernen oder alle Cookies per default darüber auf Secure setzen, habe ich bisher nicht geschafft. Erstes geht vermutlich ohne Eingriffe in die ngix config nicht.

  • Ich habe HSTS ebenfalls so aktiviert, bekomme aber beim testen danach noch die Warnung:


    Warning: Unnecessary HSTS header over HTTP

    The HTTP page at http://<...>.de sends an HSTS header. This has no effect over HTTP, and should be removed.

  • <IfModule mod_headers.c>

    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" "expr=%{HTTPS} == 'on'"

    </IfModule>


    habe es mal so in der .htaccess probiert, aber so setzt es hsts gar nicht

  • Probier mal das


    Code
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" env=HTTPS

    Matrix: @nan0:nan0.dev - IRC: nan0 on hackint.org - Discord? Nein danke!

  • funktioniert dennoch nicht poste mal meine ganze .htaccess vielleicht liegt es ja auch an was anderem, da ich damit keinerlei Erfahrung habe. HTTP to HTTPS redirection funktioniert zumindest schonmal


    Apache Configuration
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" env=HTTPS
    
    
    <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteCond %{HTTPS} off
          RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    </IfModule>
  • HTTPS Redirection würde ich hier aber nicht über die httaccess machen, sondern vielmehr im WCP unter Hostingeinstellungen setzen. Grundsätzlich sollte möglichst wenig in die htaccess gesetzt werden was nicht unbedingt notwendig ist, da diese bei jedem Seitenaufruf erst verarbeitet werden muss.

  • Bei mir läuft u.a. HSTS mit folgenden Einstellungen:


    Code
    <IfModule mod_headers.c>
      Header set Referrer-Policy "no-referrer"
      Header set X-Frame-Options "sameorigin"
      Header set X-Content-Type-Options "nosniff"
      Header set X-XSS-Protection "1; mode=block"
      Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" 
    </IfModule>
  • seltsam hatte von denen viele bisher direkt bei den zusätzlichen Headern eingefügt. Habe das jetzt testweise mal durch deine Implementierung ersetzt, aber da wird weiterhin hsts nicht ausgeführt und die anderen alle auch nicht. (es funktioniert jetzt nur die http->https weiterleitung die ja nicht mehr in der .htaccess festgelegt ist.)

  • Hier noch mal meine Einstellungen:

    1. Habe folgendes unter Hosting-Einstellungen aktiviert.

    -SSL/TLS-Unterstützung

    -Dauerhafte, für SEO geeignete 301-Weiterleitung von HTTP zu HTTPS


    2. .htaccess kann man getrost leer lassen / weg lassen. Durch nginx als reverse Proxy nimmt nginx den Request entgegen und alle manuellen Verbindungseinstellungen in der htaccess werden nicht weitergegeben zum Client.


    3. 1.png


    4. 2.png

    Wichtig ist hier bei zusätzlichen Headern die andere Syntax: [KEY]:[VALUE]


    5. Testen via https://www.ssllabs.com/ssltest/ => A+ / HSTS grün => alles ok!


    Wichtig ist bei nach allem nach dem Speichern wirklich 5 Minuten zu warten, da der Webserver einige Zeit braucht. Browser verfälschen auch gerne das Ergebnis, wenn Sachen cached werden.=> Entwicklerkonsole auf machen und in den Optionen "HTTP Cache deaktivieren" (geht in Chrome und FIrefox). Firefox zeigt auch bei jedem Request im Netzwerkreiter unter Sicherheit an ob HSTS aktiv ist.

  • Ich bin ehrlich gesagt ein wenig verwirrt. Habe das \ganze jetzt einfach wieder zurück zu nginx gesetzt und bei der .htaccess entfernt und plötzlich besteht das Problem, dass es bei http hinzugefügt wird offenbar nicht mehr :/


    Wie auch immer habe jetzt folgende Header hinzugefügt

    Code
    Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    Content-Security-Policy "frame-ancestors 'none'"
    Content-Security-Policy "default-src 'none'; img-src 'self'; style-src 'self'; object-src 'none'; script-src 'self'; font-src 'self'"
    X-Frame-Options "DENY"
    X-XSS-Protection "1; mode=block"
    X-Content-Type-Options "nosniff"
    Referrer-Policy "no-referrer"
  • Oh habe deine Antwort erst danach gesehen. Habe bei mir jetzt gerade nicht : sondern auch " " um die Parameter gesetzt. Kenne mich da nicht aus aber scheint wohl auch zu gehen. Eine Frage hätte ich allerdings noch. Was genau macht dieses Connection: keep-alive? Hatte das anfangs auch gesetzt. Am PC gab es keine Probleme, Am Handy (Iphone 4s also recht alt) hat die Seite dann allerdings nicht mehr geladen. Nachdem ich das das erste Mal mache habe ich bei den Einstellungen einfach die Ratschläge von Mozilla Observatory befolgt ;)

  • Oh habe deine Antwort erst danach gesehen. Habe bei mir jetzt gerade nicht : sondern auch " " um die Parameter gesetzt. Kenne mich da nicht aus aber scheint wohl auch zu gehen. Eine Frage hätte ich allerdings noch. Was genau macht dieses Connection: keep-alive? Hatte das anfangs auch gesetzt. Am PC gab es keine Probleme, Am Handy (Iphone 4s also recht alt) hat die Seite dann allerdings nicht mehr geladen. Nachdem ich das das erste Mal mache habe ich bei den Einstellungen einfach die Ratschläge von Mozilla Observatory befolgt ;)

    Zumindest schreibt PLESK das die Doppelpunkte hin sollten. Die Anführungszeichen mache ich bei Werten mit Leezeichen etc. sicherheitshalber auch hin.


    Ah die Seite kannte ich noch nicht! Ist sehr informativ. Danke für den Link.


    Connection Header spezifiziert ob HTTP Verbindungen wiederverwendet werden sollen. Auf keep-alive wird diese wiederverwendet, was eine gesteigerte Performance bringen soll. Hier mehr dazu https://developer.mozilla.org/…b/HTTP/Headers/Connection

    Probleme hatte ich damit eigtl. noch nicht.