gpt4 book ai didi

asp.net-mvc - AntiXss 保护 Html 模型属性

转载 作者:行者123 更新时间:2023-12-02 01:05:51 24 4
gpt4 key购买 nike

我的一些模型属性由AllowHtml 属性标记。有没有办法自动对这些字段应用 AntiXss 保护(即仅过滤允许的标签)?

最佳答案

首先,据我所知,没有内置任何东西。但是 MVC 允许通过自定义 ModelBinder 轻松完成此类操作,您可以定义您的

public class CustomAntiXssAttribute : Attribute { }

并用它来装饰您的属性(如果您愿意,甚至可以从 AllowHtmlAttribute 继承)。然后使用模型绑定(bind)器,您可以添加特定的反 XSS 保护:

    public class CutstomModelBinder : DefaultModelBinder
{
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
{
if (propertyDescriptor.Attributes.OfType<CustomAntiXssAttribute>().Any())
{
var valueResult = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name);
var filteredValue = SOME_CUSTOM_FILTER_FUNCTION_HERE(valueResult.AttemptedValue);
propertyDescriptor.SetValue(bindingContext.Model, filteredValue);
}
else // revert to the default behavior.
{
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
}
}

然后在 SOME_CUSTOM_FILTER_FUNCTION_HERE 中,您可以使用 @Yogiraj 建议的内容,或者使用正则表达式,甚至应用基于 HtmlAgilityPack 的过滤。

附注不要忘记将 ModelBinders.Binders.DefaultBinder = new CutstomModelBinder(); 添加到 Application_Start (我忘了:))

关于asp.net-mvc - AntiXss 保护 Html 模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com