信頼できないソースからの JavaScript 文字列が onclick タグ内に埋め込まれていますが、この文字列をエンコードする正しい方法がわかりません。HTML を単純化すると、次のようになります。
<input type="button" onclick="alert([ENCODED STRING HERE]);"
value="Click me" />
エンコードする方法がいくつか含まれているMicrosoft AntiXss ライブラリを使用します。テキストは HTML/XML 属性に埋め込まれているため、AntiXss.XmlAttributeEncodeメソッドを使用した XML 属性のエンコードが適切と思われます。ただし、これは JavaScript の一部でもあります。したがって、 AntiXss.JavascriptEncodeメソッドを使用した JavaScript エンコーディングも適切と思われます。
テキストが正しく表示されるようにしながら、セキュリティリークを公開しないようにするには、どれを選択する必要がありますか?
更新: 私が現在使用している回避策は
XmlAttributeEncode
、このテキストを使用して、これをタグのカスタム属性内に配置することです。その後、JavaScript を使用してこのタグから読み取ります。基本的には次のようになります。
<input type="button" onclick="alert(this.getAttribute('comment');"
value="Click me" comment="[XML ATTRIBUTE ENCODED TEXT HERE]" />
これは完全に機能し、問題を解決しますが、XML 属性内で JavaScript を正しくエンコードする方法についてはまだ非常に興味があります。