JavaScriptEncode看起来不正确

时间:2013-03-15 18:32:23

标签: javascript security xss antixsslibrary

我需要对服务器端的一些javascript进行编码,这些javascript会被注入到html中。我正在使用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在最近我们网站的安全扫描上投了一个红旗。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

也许你正在寻找System.Web.HttpUtility中的一个编码?