我需要在服务器端编码一些javascript,这些javascript被注入到html中。我使用microsoft。security。application . encoder . javascriptencode(),但它最终看起来像这样从视图源:
'var DesignTheme x3d x7bx22StyleIdx22x3ax2235x22,x22BackgroundColorx22x3ax22x23DDF1FAx22,x22HeaderColorx22x3ax22x230B70A6x22,x22ButtonColorx22x3ax22x2347B937x22,x22BoxBackgroundColorx22 x22x3a....
给了什么?我是否使用了错误的方法来编码?目标是防止跨站脚本,而这个javascript在最近对我们网站的安全扫描中发出了危险信号。
Microsoft.Security.Application.Encoder.JavaScriptEncode()
仅用于编码将在JavaScript字符串文字中使用的不可信数据。第二个可选参数boolean emitQuotes
指定是否在输出字符串的两端添加引号(默认值为true)。例如,在ASP中有两种方法可以使用该方法。净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>
也许您正在寻找System.Web.HttpUtility中的一个编码?