2

OWASP ルール 5 これが何を意味し、どのように PHP に実装するかを正確に説明してもらえますか?

完全または相対 URL を URL エンコーディングでエンコードしないでください。信頼できない入力が href、src、またはその他の URL ベースの属性に配置されることを意図している場合は、それが予期しないプロトコル、特に Javascript リンクを指していないことを確認するために検証する必要があります。次に、他のデータと同様に、表示のコンテキストに基づいて URL をエンコードする必要があります。たとえば、HREF リンク内のユーザー主導の URL は、属性をエンコードする必要があります。

SO に関するこの回答は、その一部をカバーしているようです: input is URL, how to protect it from xss with the makeHTMLAttributeSafe($string) function. しかし、それが「予期しないプロトコルまたは JavaScript リンクであるかどうか」を確認するにはどうすればよいですか? 「javascript」、「script」、「onload」などの特定の「悪い」キーワードを検索して置換する必要がありますか? 私のユーザーがこれらの用語を入力する必要がある正当な理由はないので、必要に応じてブラックリストに登録された用語を削除するというかなり厳格なアプローチで問題ありません。私は xss を理解するために多くの時間を費やしてきました。ありがとう!

4

1 に答える 1

0

ブラックリストではなく、ホワイトリストに登録してください。あなたが気付いていない新しいプロトコル (たとえば、iTunes がitms://独自の目的で使用するプロトコル) は常に存在します。

リンクでサポートするプロトコル (おそらくhttp://https://mailto://、および多分ftp://) を選択し、異なるプロトコルで始まるリンクをブロックします。

于 2012-04-26T16:45:03.700 に答える