wake-up-neo.net

Verwendet die Inhaltsdisposition in einem HTTP-Antwortheader

Ich habe festgestellt, dass der folgende asp.net-Code beim Bereitstellen von Dateien aus einer Datenbank sehr nützlich ist:

Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);

Auf diese Weise kann der Benutzer die Datei auf seinem Computer speichern und dann entscheiden, wie er verwendet werden soll, anstatt dass der Browser die Datei verwendet.

Was kann man mit dem Content-Disposition-Antwortheader noch tun?

115
Ronnie Overby

Beachten Sie, dass RFC 6266 die unten angegebenen RFCs ersetzt. Abschnitt 7 beschreibt einige der Sicherheitsbedenken.

Die Autorität für den Content-Disposition-Header lautet RFC 1806 und RFC 2183. Die Leute haben auch Content-Disposition-Hacking entwickelt. Es ist wichtig zu beachten, dass der Content-Disposition-Header nicht Teil des HTTP 1.1-Standards ist.

Der HTTP 1.1-Standard ( RFC 2616 ) erwähnt auch die möglichen sicherheitsrelevanten Auswirkungen der Inhaltsdisposition:

15.5 Probleme mit der Inhaltsdisposition

RFC 1806 [35], von denen die häufig Content-Disposition implementiert
(siehe Abschnitt 19.5.1) Header in HTTP ist abgeleitet, hat eine Reihe von sehr
ernsthafte Sicherheitsüberlegungen . Content-Disposition ist nicht Teil von
der HTTP-Standard, aber da ist weit verbreitet sind wir
Verwendung und Risiken für .__ dokumentieren. Implementierer. Siehe RFC 2183 [49]
(der RFC 1806 aktualisiert), um weitere Informationen zu erhalten.

81
Andrew Austin

Es scheint, dass der Content-Disposition-Header ursprünglich für E-Mail erstellt wurde, nicht für das Web. ( Link zu relevantem RFC .)

Ich vermute, dass Webbrowser darauf reagieren können

Response.AppendHeader("content-disposition", "inline; filename=" + fileName);

beim sparen, bin mir aber nicht sicher.

22
MiffTheFox

Siehe RFC 6266 (Verwendung des Content-Disposition Header Felds im Hypertext Transfer Protocol (HTTP)) http://tools.ietf.org/html/rfc6266

6
Manish Pai

Für asp.net-Benutzer bietet das .NET-Framework eine Klasse zum Erstellen eines Inhaltsdisposition-Headers: System.Net.Mime.ContentDisposition

Grundnutzung:

var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());
4
onof

Dieser Header ist in RFC 2183 definiert, sodass Sie am besten mit dem Lesen beginnen können.

Zulässige Werte sind diejenigen, die bei der Internet Assigned Numbers Authority (IANA) registriert sind. Ihr Wertregister sollte als endgültige Quelle angesehen werden.

2
NickFitz

Ich dachte, dieser KB-Artikel über den Microsoft-Support-Abschnitt bezieht sich auf die Diskussion hier Wie wird ein Dialogfeld zum Herunterladen von Dateien für einen bekannten MIME-Typ angezeigt

0
user824910