防止Xss攻击的Json.Net包装器

防止Xss攻击的Json.Net包装器,json,asp.net-mvc,json.net,xss,antixsslibrary,Json,Asp.net Mvc,Json.net,Xss,Antixsslibrary,我需要在应用程序MVC视图中添加一些Xss保护,这些视图目前正在使用Json.Net和Javascript小部件。ViewModels非常大和复杂,因此我无法使用Microsoft AntiXss库来对属性进行javascriptEncode,因此我需要在视图中执行此操作 dataBindings: new { inputs = new { wid

我需要在应用程序MVC视图中添加一些Xss保护,这些视图目前正在使用Json.Net和Javascript小部件。ViewModels非常大和复杂,因此我无法使用Microsoft AntiXss库来对属性进行javascriptEncode,因此我需要在视图中执行此操作

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编码,所以请温柔一点。

好的,让我们试着温柔一点:)您视图中的注释代码应该可以工作。我不知道为什么会被评论

//Microsoft.Security.Application.Encoder.JavaScriptEncode(rawValue);
JavaScriptEncode方法将字符串作为第一个参数

在代码中,还将检查JRaw对象是否为字符串类型。我不知道该方法有多有用,因为它返回JValue实例

只要您传递一个字符串,并希望它是JavaScript编码的,那么Microsoft.Security.Application.Encoder.JavaScriptEncode就可以为您工作