C#/ASP.NETでJavaScriptをエスケープする正しい方法は何ですか? 例えば:
<script>
var abc = '<%= def%>';
</script>
<div onclick="myfunction('<%= Xyz%>')" />
これについては確かに質問がありますが、さまざまなオプションをリストしています。がある
- System.Web.HttpUtility.JavaScriptStringEncode
- System.Web.Util.HttpEncoder.JavaScriptStringEncode
- Microsoft.Security.Application.Encoder.JavaScriptEncode
- Microsoft.JScript.GlobalObject.escape
- System.Text.Encodings.Web.JavaScriptEncoder (コア)
- 他の?
これらのメソッドの結果は常に同じであるとは限らず、それらのドキュメントはユース ケースを明確に説明していないようです。
後者の例の場合、おそらく HTML と JS エンコーディングの両方を使用する必要があります。HTML エンコーディングなしで使用すると、System.Web.HttpUtility.JavaScriptStringEncode を悪用することができました。ただし、Microsoft.Security.Application.Encoder.JavaScriptEncode は非常に徹底しているため、適切な HTML エンコーディングを追加しても、それを悪用する方法がわかりません。
JSFiddle: https://jsfiddle.net/1afn5dky/
それぞれの方法に好ましいユースケースはありますか?