2011-10-13 16 views
5

プロジェクトの一環として、Webフォームを使用してユーザーからのテキストを受け取り、Webページに表示します。彼らが提供するテキストはURLを含んでいるかもしれません、もし私が改善された経験のためのハイパーリンクとしてそれをレンダリングしたいのであれば。たとえば、ユーザーがhttp://www.google.comを含むテキストを送信して、それを<a href="http://www.google.com">...に変更したい場合は信頼できないテキストでハイパーリンクを安全にレンダリングする

これを実行する際に、私が知っておくべきことは何ですか?私はXMLライブラリが特殊文字をエスケープするので、単純なXSS挿入を避けるための対策を既に講じていますが、より洗練された攻撃があると思います。

+0

あなたの最大の問題の1つは[これかもしれません](http://www.youtube.com/watch?v=oHg5SJYRHA0)編集:ダン、あなたはhrefを難読化しないと思っています。これを無視する;) – vzwick

答えて

1

javascript:を無視するだけでなく、他のプロトコルで起動または制御できる特定のアプリケーションがあるため、おそらくhttp:プロトコルのハイパーリンクを作成する必要があります。 Steam、Skype、AOL Messengerが気に入っています。

+1

data:text/html; base64、PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4 = –

0

URLを囲むのがaの場合は、悪意のあるURLを入力すると(短縮される可能性があります)、クリックするだけで問題が発生します。 (例えば、任意にJavaScriptなどを実行することはできません)。

URLを一致させるときは、擬似プロトコルjavascript:を使用しないでください。素晴らしいことは何も起こり得ない。