web-dev-qa-db-ja.com

HTTP応答ヘッダーでのcontent-dispositionの使用

データベースからファイルを提供するときに、次のasp.netコードが非常に役立つことがわかりました。

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

これにより、ユーザーはファイルをコンピューターに保存し、ブラウザーがファイルを使用しようとする代わりに、その使用方法を決定できます。

Content-disposition応答ヘッダーを使用して他にどのようなことができますか?

121
Ronnie Overby

RFC 6266 は、以下で参照されているRFCに優先することに注意してください。 セクション7 は、関連するセキュリティ上の懸念の一部を説明しています。

Content-dispositionヘッダーの権限は RFC 1806 および RFC 2183。 人々も考案しました content-dispositionハッキング。 注意することが重要ですcontent-dispositionヘッダーはHTTP 1.1標準の一部ではありません。

HTTP 1.1標準( RFC 2616 )では、コンテンツの性質によって起こりうるセキュリティの副作用についても言及しています。

15.5コンテンツ処理の問題

RFC 1806 [35]、そこから頻繁に実装されるContent-Disposition
(セクション19.5.1を参照)HTTPのヘッダーは派生し、非常に多くの
セキュリティに関する重大な考慮事項。 Content-Dispositionは一部ではありません
HTTP標準ですが、広く実装されているため、
実装者の使用とリスクを文書化する。 RFC 2183 [49]を参照
(RFC 1806を更新)詳細については。

82
Andrew Austin

まあ、Content-Dispositionヘッダーは元々、Webではなく電子メール用に作成されたようです。 ( 関連RFCへのリンク 。)

Webブラウザが応答する可能性があると思います

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

保存するとき、しかし、私はわかりません。

23
MiffTheFox

RFC 6266(ハイパーテキスト転送プロトコル(HTTP)のContent-Dispositionヘッダーフィールドの使用)を参照してください http://tools.ietf.org/html/rfc6266

6
Manish Pai

Asp.netユーザーの場合、.NETフレームワークはコンテンツ処理ヘッダーを作成するクラスを提供します。 System.Net.Mime.ContentDisposition

基本的な使用法:

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

このヘッダーは RFC 218 で定義されているため、読み始めるのに最適な場所です。

許可される値は、Internet Assigned Numbers Authority(IANA)に登録されている値です。それらの 値のレジストリ は決定的なソースと見なされるべきです。

2
NickFitz

MicrosoftサポートセクションのこのKB記事は、ここでの議論に関連していると思います 既知のMIMEタイプのファイルダウンロードダイアログボックスを表示する方法

0
user824910