XSS を防御するということは、出力時にユーザー入力をエスケープすることを意味します。XSS の問題は、本質的には、ユーザーが入力したデータとコードを混乱させるコード インジェクション、HTML または JavaScript コード インジェクションです。この問題を解決するには、ユーザーが制御可能なデータの特定の出力環境に応じて適切なエスケープを実行する必要があります。
<HTML标签>[输出]</HTML标签>
htmlencodeが必要です。具体的には、< をエスケープすると HTML インジェクションを防ぐことができます。
<div attr=不可信数据>content</div>
良い解決策は、信頼できないデータを二重引用符で囲み、データを htmlencode することです。
<script>var $a="不可信数据"</script>
出力変数が引用符で囲まれていることを確認し、JavaScript を使用して入力データをエンコードします。 の切り捨てを防ぐには
<a href=# onlick="funcA('$var')"> test</a>
防御: 最初に JavaScript エンコードを実行し、次に HTML エンコードを実行します。出力データは html タグ属性内にあるため、ブラウザは html 自己デコードを実行します。
プロトコル、http または https をホワイトリストに登録し、他の部門を URL エンコードします。 JavaScript やデータ URI などの疑似プロトコル攻撃を回避します。