我需要在应用程序MVC视图中添加一些Xss保护,这些视图当前正在使用Json.Net和Javascript Widgets。 ViewModel非常庞大和复杂,因此我无法将Microsoft AntiXss库用于javascriptEncode属性,因此我需要在View中执行此操作。
dataBindings: new
{
inputs = new
{
widgetType = "textbox",
value = new JRaw("myPropertyName")
}
}
Javascript小部件控件当前以JRaw对象的形式使用json数据。我想在发送到控件绑定之前,以子类或实用程序方法的形式创建一个围绕JRaw对象的包装器,以javascript编码字符串属性。
public static JRaw JRawEncode(JRaw rawObj)
{
if (rawObj != null && rawObj.Value.GetType() == typeof (String))
{
//Microsoft.Security.Application.Encoder.JavaScriptEncode(rawValue);
}
return rawObj;
}
这可以在JRaw对象上完成吗?有没有其他方法可以用Json.NET做到这一点?我是Json.Net和Xss编码的新手,所以请保持温和。
答案 0 :(得分:0)
好的,让我们试试温柔:)你视图中的注释代码应该可以工作。我不知道为什么评论。
//Microsoft.Security.Application.Encoder.JavaScriptEncode(rawValue);
JavaScriptEncode方法将string作为第一个参数。 https://wpl.codeplex.com/SourceControl/latest#trunk/Microsoft.Security.Application.Encoder/Encoder.cs
在您的代码中,您还要检查JRaw对象是否是一种String类型。我不知道JRaw.ToString方法有多么有用,因为它会返回JValue实例。
只要你传递一个字符串,并期望它是JavaScript编码的,那么Microsoft.Security.Application.Encoder.JavaScriptEncode就适合你。