HTTPヘッダー、サーバーのポリシーなどを指定して、ブラウザが特定のページのインラインスクリプト(外部リソースではなく、ページに直接配置されたコード、つまりイベントハンドラ、スクリプトブロックなど)を実行することを禁止する方法はありますか? 私はいくつかの普遍的な解決策を探しています: クロスブラウザと HTTP サーバーに依存しません。
質問する
78 次
2 に答える
0
多くのグーグルと大学とのいくつかの議論の後、私は最終的に解決策を見つけました-コンテンツセキュリティポリシー(概念を説明する良い記事- 「コンテンツセキュリティポリシーの紹介」はマイクウェストによって書かれました)。現在、W3C の推奨候補段階にありますが、最も人気のあるブラウザーは既にサポートしています (残念ながら、IE バージョン 10 未満でサポートされています)。
それはまさに私が探していたものです:
- これは応答 HTTP ヘッダーであるため、サーバーに依存しません。
- それは(多かれ少なかれ...)クロスブラウザです
unsafe-inline
ブラウザーがインライン スクリプト (ディレクティブを使用) または eval ( ; eval は悪)を実行することを禁止し、unsafe-eval
(ブラウザー セキュリティの観点から) 多くの有用な制限を導入します。
于 2013-01-18T21:41:31.203 に答える
0
基本的に、これはXSSフィルタリングと呼ばれ、簡単な答えは、入力を防ぐか、通過した場合はまったくレンダリングしないことです。これを行うには多くの方法があり、プラットフォームによってはライブラリも役立ちます。
エントリポイントで、それらをフィルタリングする必要があります。クライアントからの送信は常にフィルタリングする必要があります。これを XSS フィルタリングと呼びます。
レンダリング側ではhtml_entities
、特にユーザー入力からの特殊文字をページにエスケープしたい場合のようなことをする必要があります。
これらはすべてサーバー上で行われます。
于 2013-01-18T12:35:45.330 に答える