Json.Net Wrapper可以防止Xss攻击

时间:2015-03-19 01:47:34

标签: json asp.net-mvc json.net xss antixsslibrary

我需要在应用程序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编码的新手,所以请保持温和。

1 个答案:

答案 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就适合你。