2012-04-26 8 views
2

OWASP Rule 5 これが意味するものとPHPで実装する方法を正確に説明してもらえますか?PHPを使用してXSSを軽減するOWASPのルール5を実装する方法

完全または相対URLをURLエンコードでエンコードしないでください。信頼できない入力はHREF、SRCまたはその他のURLベースの属性に配置されることを意図している場合、予想外のプロトコル、特にJavascriptのリンクを指していないことを確認するために検証する必要があります。 URLは、他のデータと同様に表示コンテキストに基づいてエンコードされます。たとえば、HREFリンクのユーザー主導URLは、属性エンコードされている必要があります。 makeHTMLAttributeSafe($文字列)機能付き input is URL, how to protect it from xss

にこの答えは、SO、それの一部を覆うように思われます。しかし、それが '予期せぬプロトコルかJavaScriptのリンクかどうかを確認するにはどうすればよいですか? 'javascript'、 'script'、 'onload'などの特定の「悪い」キーワードを検索して置換する必要がありますか?私のユーザーがこれらの用語を入力する必要がある理由はまったくないので、必要に応じてブラックリストに載っている用語を削除するというかなりドラコニア的なアプローチでうまくいく。私はxssを理解しようと多くの時間を費やしてきましたが、これについてのいくつかの説明を本当にうれしく思います。ありがとう!

+1

CodeIgniterには、非常に優れたxssクリーニング方法があります。https://github.com/EllisLab/CodeIgniter/blob/develop/system/core/Security.php - * xss_clean *行281 – Mike

+0

ありがとう@Mike、とても役に立ちます。私はPHPフレームワークを使用したことはありませんが、実際にそれを調べる必要があります。 – Jeff

+0

CodeIgniterは素晴らしく、実際によく文書化されています。 – Mike

答えて

0

ホワイトリスト、ブラックリストに入れないでください。あなたにはわからない新しいプロトコル(iTunesは、例えば、それ自身の目的のためにitms://を使用します)があります。

あなたがリンクでサポートするプロトコルを選択してください(おそらくhttp://https://mailto://、多分ftp://)と異なるプロトコルで始まるすべてのリンクをブロックします。

関連する問題