小编Ank*_*ani的帖子

如何使用反xss攻击清理web api中的输入数据

以下是我的代码片段

模型类

// Customer.cs

using CommonLayer;

namespace Models
{
    public class Customer
    {
        public int Id { get; set; }

        [MyAntiXss]
        public string Name { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想清理Model类的'Name'字段中的值,如下所示

// CutstomModelBinder.cs

 using Microsoft.Security.Application;
    using System.ComponentModel;
    using System.Linq;
    using System.Web.Mvc;

    namespace CommonLayer
    {
        public class CutstomModelBinder : DefaultModelBinder
        {
            protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
            {
                if (propertyDescriptor.Attributes.OfType<MyAntiXssAttribute>().Any())
                {
                    ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name);
                    string filteredValue = Encoder.HtmlEncode(valueResult.AttemptedValue);
                    propertyDescriptor.SetValue(bindingContext.Model, filteredValue);
                }
                else
                    base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c# xss modelbinder asp.net-web-api

7
推荐指数
2
解决办法
7318
查看次数

标签 统计

asp.net-web-api ×1

c# ×1

modelbinder ×1

xss ×1