そのため、ユーザーが選択したユーザー名を使用して登録し、大きなテキスト ブロックを送信してコメントを追加できるサイトを持っています。現在、XSS を回避するために、データベースへの入力時にデータに strip_tags を使用し、属性ではなく本体のデータのみを出力しています。現在、サイトに変更を加えています。そのうちの 1 つは、誰かがユーザー名 (リンク) をクリックしたときに読み込まれるユーザー ページを作成することです。これは次のようになります。
<a href="example.com/user/<?php echo $username; ?>">...</a>
$username 変数の場合、誰かが挿入できるのではないかと心配しています
<a href="example.com/user/user" onClick="javascript:alert('XSS');">...</a>
これに関する他のSOの投稿をたくさん読んだことがありますが、白黒の答えはありませんでした。入力の strip_tags に加えて、出力のすべてのテキストで次を使用すると:
echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
javascript:
インライン構文を使用するものを含め、すべての XSS 攻撃を阻止するのに十分でしょうか?
また、「Me > you」などを削除せずに実際の html タグを削除する方法はありますか?
ありがとう!