4

私はWebアプリを構築しており、ユーザーはHTMLコンテンツを動的に作成できます。彼らがで始まるリンクを作成できるようにすることは安全ですか(egwrt XSS攻撃)#

なぜそうならないのかわかりません-おそらく私はただ妄想しているだけです。#(私のJavascriptコードは、 URLに対して特に何もしません。)

とにかく私が尋ねる理由の1つは、 HTMLをサニタイズするためにGoogleCajaのhtml-sanitizerを使用していることです。URL:sをフィルタリングします、デフォルトのフィルターは次のようになります。

function urlX(url) { if(/^https?:\/\//.test(url)) { return url }}

つまり、プロトコルを指定する必要があり、HTTPとHTTPSのみが許可されますが、許可されませんjavascript:。最近、URLフィルタリング機能を次のように変更しました。

function urlX(url) {
  if (/^https?:\/\//.test(url) || /^#/.test(url)) return url;
}

(つまり、#....許可されます。)

#...リンクが安全だと思うかどうか聞いてみるべきだと思いました。

(たとえば、ブラウザは `href ='#javascript:....'のようなリンクで異常なことは何もしませんか?まあ、そうではありません(とにかく私のブラウザではありません)が、おそらく他の何かがあります。 ..私が知らないこと)

4

2 に答える 2

3

安全ではありません。たとえば、jQueryのにXSSの問題がありました$(location.hash)http://ma.la/jquery_xss/にPoCがあります。

したがって、これを禁止するか、#以降のすべてを適切にサニタイズします。

于 2012-02-03T14:49:09.683 に答える
3

安全である必要があります。URL内のaの後は、ブラウザによってフラグメント識別子#として解析されます。

もちろん、そのフラグメント識別子を読み取り、それを使って安全でないことを行うJavaScriptがページにある場合、すべての賭けは無効になります。ただし、そのような場合は、修正する必要のある、より根本的なセキュリティの問題があることに注意してください。

#攻撃者が完全なURLに、または別の場所からサイトを指すリンクに悪意のあるフラグメント識別子を含める可能性があるため、最初からリンクを禁止するだけではあまり効果がありません。

于 2012-02-03T16:23:34.220 に答える