1

私はjavascriptを書くことができるすべての方法を理解しようとしています。受け入れ可能なタグのホワイトリストを作成していますが、属性によって取得されています。

私のリッチHTMLエディターでは、リンクなどを許可しています。

<a href="">Hi </a>

現在、私はhtmlアジリティパックを使用して、サポートしない属性とその問題に関するhtmlタグを削除しています。

しかし、人がこのようなことをすることができるかどうかはまだわかりません

<a href="<script>alert('hi')</script>">Bad </a>

それで、私がサポートしているすべての属性の内部テキストを調べ始め、それらをhtmlエンコードする必要があるかどうかわかりませんか?または何なら。

また、あるページに移動し、ロード時にJavaScriptを起動するhtmlリンクを防ぐ方法もわかりません。

ホワイトリストがそれを止めることができるかどうかはわかりません。

4

3 に答える 3

5
<a href="javascript:void(0)" onclick="alert('hi');">Bad</a>

また

<a href="javascript:alert('hi');">Bad</a>
于 2010-06-18T23:57:35.843 に答える
3

ユーザーが入力したHTML用のXSSバリデーターを本番用に作成しようとしている場合は、既存のライブラリを使用することを強くお勧めします。採用しているホワイトリストアプローチを使用しても、XSSになる可能性のある属性値は非常に多くあります。XSSチートシートで「javascript:」を検索して、javascript:urisが表示される可能性のあるあらゆる種類の場所を確認します。不完全なリストは次のとおりです。

<IMG SRC="javascript:alert('XSS');">
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
<BODY BACKGROUND="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">

次のように、外部スクリプトURLを挿入する方法もあります。

<XSS STYLE="behavior: url(xss.htc);">

あなたがあなた自身の教育のためにこれを書いているなら、XSSチートシートはユニットテストのためのいくつかの本当に素晴らしい飼料を持っています。

于 2010-06-19T00:21:56.967 に答える
1

あなたはこれを行うことができます:

<a href="javascript:(function(){
    alert('hello');
})()">Hello</a>

あなたが本当に夢中になりたいなら

編集: 私はこれがさらに好きです

<a onclick="alert(eval({Crazy:function(){alert('Hello');return 'World';}}).Crazy());">
    Crazy
</a>
于 2010-06-18T23:59:46.103 に答える