web-dev-qa-db-ja.com

ユーザーがアップロードしたファイルにXSSコードが含まれていないことを確認する方法

XSS攻撃に関連するセキュリティの提供に取り組んでいます。私のウェブサイトでは、次のMIMEタイプのみが許可されています。

XML, CSV, HTML, PLAIN, VND_WAP_WML, APPLICATION_Zip, APPLICATION_PDF, APPLICATION_VND_FDF, APPLICATION_MS_Word, APPLICATION_OCTET_STREAM, APPLICATION_VND_MS_PowerPoint, APPLICATION_X_VISIO, IMAGE_GIF, IMAGE_PNG, IMAGE_TIF, APPLICATION_VND_MS_Outlook, APPLICATION_DOWNLOAD, APPLICATION_JSON

AntiSamyを使用してHTMLファイルをサニタイズしました。データベースにデータをアップロードする前にファイル内のデータが安全であることを確認し、永続的なXSS攻撃を防ぐにはどうすればよいですか?

6
Slayer

本当にできません。

X-Content-Type-Options: nosniffヘッダーを含むファイルを提供することで、HTMLを実行してコンテンツを盗聴する可能性を減らし、Content-Disposition: attachmentを使用して提供することでそれらがHTMLページとして扱われないようにすることができますが、古いブラウザでも心配する必要があります。について、およびブラウザのプラグイン。 (たとえば、Javaの壊れたSOPおよびFlashのクロスドメインXMLスニッフィング。)

ユーザーがアップロードしたファイルを受け入れる必要がある場合の最善の回避策は、別のドメインからファイルを提供することです。これにより、XSS攻撃によってメインサイトが侵害されることはありません。

6
bobince

できません。

pDFは、他の方法でエンコード/圧縮されたデータを含めることができ、文字列を画像などに追加できます。あなたは3番目のソフトウェアによってアップロードされたすべてのファイルをチェックする必要があります(sourcefireはpdf/zip用のそのようなパーサーのようなものを構築します-lua iircを使用してsnortを拡張するデータですが、私はそのプロジェクトの状態を知りません)