2016-06-01 4 views
3

HTMLコード:'='と '>'なしでxssするには?

<html> 
    <script> 
    input = input.replace(/[=>]/g, ''); 
    document.write('<article>'+input+'</article>'); 
    </script> 
</html> 

コードでinputはどのようなユーザー入力(任意の文字列)である、と私はalert(1)にしようとしています。 「=」と「>」は無効になっていますので、どうすればそれを達成できますか?

+0

最初に「入力」とは何ですか? –

+0

入力は任意の文字列です。 – shinian

+0

確かに、あなたがここに示したコードを定義していないので、置き換えられるものは明確ではありません –

答えて

1

いいえ、理由がないので、あなたはハックなXSS防止戦略を採用しているようです。

生のHTMLとして値を出力している場合は、ユーザーが入力にHTMLを使用できるようにすることをお勧めします。しかし、=>なしで意味のあるHTMLを作るのは難しいです。

あなただけそれを適切に扱い、あなたは問題ないはず、その後、ユーザーは、プレーンテキストを入力できるようにしたい場合:

var div = document.createElement('div'); 
div.textContent = input; 
document.write('<article>' + div.innerHTML + '</article>'); 

そして、あなたがdocument.write()を使用して、これらに限定されない場合Bergiは、以下の指摘するように、あなたはDOM操作を使う方が良いです。のみ= OR >をフィルタリングする正規表現は、例えばによってバイパスすることができる

document.body.appendChild(document.createElement('article')).textContent = input; 
+1

OPは、自分自身を思いついていない既存のXSSフィルタを評価しているかもしれません。正しい解決策を知ることはまだ良いです! –

+0

その場合、その既存のXSSフィルタはかなりひどいです。 XSSの防止に成功したとしても、 '=' sと '>'がすべて削除されたテキストが返されます。 – JLRishe

+0

あなたのソリューションはすべてのXSS攻撃を防ぎますか?あなたのソリューションの背後にある魔法について少し説明してください。 – Sayakiss

2

<script>alert(0);</script>または<img src=x onerror="javascript:alert(0)"<。しかし、私は=>の両方を入力から除外して正規表現のバイパスを認識していません。

関連する問題