5

特定のページのJavascriptを無効にするHTTPヘッダーはありますか?私のウェブサイトはユーザー生成のHTMLコンテンツを配信しており(そのため、私は単に使用することはできませんhtmlenitities)、スクリプト(JavaScriptインジェクション)を防ぎたいと思っています。

私はすでにHttpOnlyを使用しています-Cookieはメインドメインでのみ認証用に設定されていますが、ユーザーコンテンツはCookieを読み取ることができないサブドメインでのみ表示されます。問題は、JavaScriptを実行する可能性がまだ多すぎることです。たとえばonclick、Internet Explorerのようなイベント属性を使用すると、CSSにプロパティがあり、expressionこれまで聞いたことのないJavaScriptの実行()が可能になります。私が読んだもう1つの興味深いアイデアは、次のコードをブロックするために例外をスローすることでした。もう1つのアイデアは、許可されたすべてのタグと、許可された各属性名を持つ配列を含むリストを定義することですが、これは非常に大変な作業であり、すべての可能なインジェクションをカバーするわけではないと思います。

この問題を抱えているのは私だけではないと思います。少なくとも最新のブラウザでは、考えられるすべての有害なコードをカバーする可能性を誰かが知っていますか?

に似た単純な架空のヘッダーをX-Scripting: disabled使用すると、作業が非常に簡単になります。

4

1 に答える 1

2

はい、コンテンツ セキュリティ ポリシーと呼ばれる実験的な HTTP ヘッダーがあり、JavaScript の送信元を制御できるため、XSS が不可能になる可能性があります。ただし、現在は Chrome と Firefox でのみサポートされています。

HttpOnly-cookies を有効にすることをお勧めしますが、これにより完全にゼロの攻撃を防ぐことができます。CSRF トークンを読み取り、 XHR でリクエストを実行することで、 XSS を悪用することができます。

XSS を取得するには多くの方法があり、ShieldSeal (ダウン) のような脆弱性スキャナーは (ほぼ) すべての方法を見つけます。Skipfishは非常に原始的なオープン ソースの脆弱性スキャナーですが、無料です。これは、ほとんどの Web アプリケーションが広範囲に広がる脆弱性に対処する方法です。(私は ShieldSeal で働いており、彼らの脆弱性スキャナーの構築を手伝っており、この仕事が大好きです。)

問題が見つかった場合は、htmlspecialchars($var)またはを使用htmlspecialchars($var, ENT_QUOTES)して入力をサニタイズする必要があります。攻撃者がまたはその他の JavaScript イベントENT_QUOTESを導入するのを防ぐことができます。onclick

于 2012-07-14T14:57:57.497 に答える