Verwendet von Content-Disposition in einem HTTP-Antwort-Header
-
06-07-2019 - |
Frage
ich habe folgenden asp.net Code als sehr nützlich erwiesen, wenn Dateien aus einer Datenbank dienen:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
Auf diese Weise können die Benutzer die Datei auf ihrem Computer speichern und dann entscheiden, wie es zu benutzen, statt der Browser versucht, die Datei zu verwenden.
Welche anderen Dinge können mit dem Content-Disposition-Antwort-Header zu tun?
Lösung
Beachten Sie, dass RFC 6266 RFCs unten verwiesen wird ersetzt. Abschnitt 7 beschreibt einige der damit verbundenen Sicherheitsprobleme.
Die Behörde über den Content-Disposition-Header ist RFC 1806 und RFC 2183. Die Menschen haben auch ein href erdacht <= "http://www.gnucitizen.org/blog / Content-Disposition-Hacking /“rel = "noreferrer"> Content-Disposition Hacking. Es ist wichtig, dass der Content-Disposition-Header ist nicht Teil des HTTP-1.1-Standard.
Der HTTP 1.1 Standard ( RFC 2616 ) erwähnt auch die möglichen Sicherheitsnebenwirkungen Inhalt Disposition:
15,5 Content-Disposition Veröffentlichungen
RFC 1806 [35], von denen die oft implementiert Content-Disposition
Header in HTTP (Abschnitt 19.5.1 sehen) ist abgeleitet ist, hat eine Reihe von sehr
ernsthafte Sicherheitsüberlegungen. Content-Disposition ist nicht Teil der Häuser der HTTP-Standard, aber da es sich um weitgehend umgesetzt sind wir
dokumentieren ihre Nutzung und die Risiken für Implementierer. Siehe RFC 2183 [49]
(Welche Updates RFC 1806) für Details.
Andere Tipps
Nun, scheint es, dass die Content-Disposition-Header ursprünglich für E-Mail erstellt wurden, nicht im Web. ( Link zu relevanten RFC .)
Ich vermute, dass Web-Browser reagieren kann
Response.AppendHeader("content-disposition", "inline; filename=" + fileName);
Beim Speichern, aber ich bin nicht sicher.
RFC Siehe 6266 (Die Verwendung des Content-Disposition-Header-Feldes in dem Hypertext Transfer Protocol (HTTP)) http://tools.ietf.org/html/rfc6266
Für asp.net Anwender bietet das .NET Framework eine Klasse einen Content-Disposition-Header zu erstellen: System.Net.Mime.ContentDisposition
Grund Nutzung:
var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());
Dieser Header wird in RFC 2183 rel="nofollow, so dass der beste Ort wäre, zu lesen beginnen.
Zulässige Werte sind diejenigen mit der Assigned Numbers Authority (IANA) Internet registriert; ihre Registrierung von Werten wie die definitive Quelle gesehen werden soll.
Das Denken dieses KB-Artikel auf dem Microsoft Support-Bereich wird auf die Diskussion im Zusammenhang hier Wie ein Dialogfeld Dateidownload für einen bekannten MIME-Typen erhöhen