2

我需要在注入到 html 的服务器端编码一些 javascript。我正在使用 Microsoft.Security.Application.Encoder.JavaScriptEncode() 但它最终从视图源看起来像这样:

'var DesignTheme \x3d \x7b\x22StyleId\x22\x3a\x2235\x22,\x22BackgroundColor\x22\x3a\x22\x23DDF1FA\x22,\x22HeaderColor\x22\x3a\x22\x230B70A6\x22,\x22ButtonColor\x22\x3a \x22\x2347B937\x22,\x22BoxBackgroundColor\x22\x3a....

是什么赋予了?我是否使用错误的方法进行编码?目标是防止跨站点脚本,这个 javascript 在最近对我们网站的安全扫描中抛出了一个危险信号。

4

2 回答 2

4

Microsoft.Security.Application.Encoder.JavaScriptEncode()仅用于编码将在 JavaScript 字符串文字中使用的不受信任的数据。可选的第二个参数 ,boolean emitQuotes指定是否在输出字符串的任一端添加引号(默认为 true)。因此,例如,在 ASP.NET WebForms 中可以使用以下两种方法:

<script>
    <% string nameEnteredByUser = "alert('I am a hacker');"; %>

    var name = <%= Microsoft.Security.Application.Encoder
        .JavaScriptEncode(nameEnteredByUser) %>;
    var nameWithMessage = '<%= Microsoft.Security.Application.Encoder
        .JavaScriptEncode(nameEnteredByUser, false) %>' + ' is a very nice name.';

    console.log(name); //alert('I am a hacker');
    console.log(nameWithMessage); //alert('I am a hacker'); is a very nice name.

</script>
于 2013-05-02T20:28:49.730 回答
0

Maybe you are looking for one of the encodes in System.Web.HttpUtility?

于 2013-03-15T18:36:38.157 回答