2016-08-05 24 views
2

Auf meiner Website können Dateien von URLs geteilt werden wieHTTP "Nicht ausführen!" Header

"/ file/file_id",

und der Server sendet zurück genau den Inhalt der Datei mit dem Dateinamen auch angegeben werden.

Ich denke, ich sollte etwas mit dem Content-Type-Header tun. Wenn ich sage

Content-Type: "image" Firefox führt auch gerne HTML-Dateien. Es scheint von

Content-Type: "image/jpeg"

Für ein lösendes Ich denke, die nur sagen, „Ich bin ein Bild!“ sollte nach Standards ausreichen. Zum Beispiel mit einem Tippfehler ("jpeg" auslassen) konnte ich meine ganze Seite ausnutzen. Plus jetzt muss ich nach allen gängigen Bildtypen suchen und Header für sie implementieren.

Zweitens wäre es toll, wenn es einen Header dafür (NICHT AUSFÜHREN) gäbe. Ist dort eines?

Ich schaute auf einige "X-XSS-Protection" Header, aber es sieht aus wie etwas anderes nur IE versteht sowieso. Sorry, wenn das irgendwo beantwortet wurde, habe ich es nicht gefunden.

Antwort

2
X-Content-Type-Options: nosniff 

Makes Browser respektieren die Content-Type Sie senden, wenn Sie also vorsichtig sind nur bekannt sichere Typen senden (z nicht SVG!), Wird es in Ordnung sein.

Es gibt auch CSP, die eine zweite Verteidigungslinie sein könnte:

Content-Security-Policy: default-src 'none' 

Seiten, die sehr vorsichtig sind um die Sicherheit Host 3rd-Party-Inhalte auf einer ganz anderen Top-Level-Domain (same-origin policy Schutz zu erhalten und vermeiden Sie die Cookie-Injektion durch kompromittierte Subdomains).

1

Traditionell gab es viele Möglichkeiten, die verschiedenen Schutzmechanismen zu umgehen. Daher beruht eine vollständige Verteidigung auf mehreren Mechanismen (Defense-in-Depth).

Die meisten größeren Unternehmen lösen das, indem sie solche Dateien auf einer benutzerdefinierten Domäne hosten (z. B. googleusercontent.com). Wenn ein Angreifer Skripts auf einer solchen Domäne ausführen kann, erhält XSS zumindest keinen Zugriff auf die Hauptwebsite.

X-Content-Type-Options ist eine nicht standardmäßige Kopfzeile und wurde bis vor kurzem in Firefox nicht unterstützt, ist aber immer noch Teil der Verteidigung. Es ist möglich, Dateien zu erstellen, die in vielen Formaten gültig sind (ich habe eine Datei, die ein "gültiges" gif, html, javascript und pdf ist).

Bilder können normalerweise direkt (mit x-content-type-options) bedient werden.

Andere Dateien können mit dem Inhaltstyp text/plain geliefert werden, während andere mit "Content-Disposition: attachment" bedient werden, um einen Download zu erzwingen, anstatt sie im Browser anzuzeigen.