これは、OwaspのXSS防止に関するチートシートのルール#2のようです。が言っているビットに注意してください:
適切に引用された属性は、対応する引用でのみエスケープできます
したがって、属性が二重引用符または一重引用符で正しく囲まれ、これらをエスケープする限り(つまり、二重引用符( ")は"になり、一重引用符(')は'(または'))になります) Apacheは一重引用符(')をエスケープしないため、このタスクには不十分StringEscapeUtils.escapeHtml
であることに注意してください。これを行うには、Stringのメソッドを使用する必要があります。replaceAll
それ以外の場合、属性が記述されている場合:<div attr=some_value>
そのページの推奨事項に従う必要があります。
&#xHH;を使用して、ASCII値が256未満のすべての文字をエスケープします。属性の切り替えを防ぐためのフォーマット(または使用可能な場合は名前付きエンティティ)
ただし、これの非Owasp標準実装があるかどうかはわかりません。ただし、とにかくこの方法で属性を記述しないことをお勧めします。
これは、標準の属性値を入力する場合にのみ有効であることに注意してください。属性がhref
またはJavaScriptハンドラーである場合は、別の話になります。イベントハンドラ属性内の安全でないコードから発生する可能性のあるXSSスクリプト攻撃の例については、http://ha.ckers.org/xss.htmlを参照してください。