如何在以下上下文中正确编码 JavaScript:
<html>
...
<script type="text/javascript">
var settings = @Html.PleaseEncode(settings.ToJson());
// ...
</script>
</html>
我的 JSON 对象中的值是由应用程序管理员设置的,所以我假设它们需要正确编码——对于 HTML 和 JavaScript。
我正在使用System.Web.Script.Serialization.JavaScriptSerializer进行 JSON 编码。看起来 JavaScriptSerializer 在将文本输出为 时进行了一些编码<None>
,\u003cNone\u003c
但我不确定它有多安全。现在,我正在使用它,@Html.Raw
因为它可以在安全输入的情况下工作。它生成以下内容:
var settings = {"UnselectedReason":"None Selected", /*...*/};
如果我使用@Html.Encode
我会得到:
var settings = {&quot;UnselectedReason&quot;:&quot;None Selected&quot;, /*...*/};
我尝试过使用和不使用AntiXSS,但我认为这两种方式都没有区别。