gpt4 book ai didi

ajax - 输入验证不适用于作为 JSON 发送的 asp.net mvc 4 模型

转载 作者:行者123 更新时间:2023-12-02 09:23:16 24 4
gpt4 key购买 nike

我在 View 中有一个模型和一个表单。我有一个简单的字符串字段,称为描述。我可以插入如下脚本: <script>alert('xss')</script>到那个领域。我可以看到在我的网站上对其他模型的其他操作中我看不到我没有AllowHtml或类似的东西。

唯一的区别是,对于这个模型,我使用带有 json 对象和 application/json 内容类型的帖子ModelState.IsValid返回 true。即使有一个带有 xss 脚本的描述属性...

对于其他操作,我制作了一个简单的 ajax 帖子。

为什么验证输入不适用于这种 JSON ajax 帖子?如何防止这种 ajax 请求在整个网站上发生 xss?

谢谢

最佳答案

这是因为ValidateInput仅适用于FormValueProvider。至于JsonValueProvider,您需要推出自己的机制。

步骤1)创建标记属性CustomAntiXssAttribute2) 通过子类化 DefaultModelBinder 创建自定义模型绑定(bind)器3) 重写BindProperty 方法 -> 获取底层属性的尝试值,对其进行清理并将其分配给 View 模型属性。检查this出来。

编辑:将行 var valueResult = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name); 替换为 var valueResult = bindingContext.ValueProvider.GetValue((string.IsNullOrWhiteSpace(bindingContext.ModelName) ? string.Empty) : bindingContext.ModelName + ".") + propertyDescriptor.Name); 以支持嵌套 ViewModel。

关于ajax - 输入验证不适用于作为 JSON 发送的 asp.net mvc 4 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917578/

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