guy*_*ler 11 ajax asp.net-mvc jquery
我在视图中有一个模型和一个表单.我有一个简单的字符串字段,称为描述.我能够将脚本插入<script>alert('xss')</script>
到该字段中.我可以看到,在我的网站与其他模型的其他行动中,我不能没有AllowHtml
或类似的东西.
唯一的区别是,对于这个模型,我做一个带有json对象和内容类型的application/json的帖子,ModelState.IsValid
它返回true.即使有一个带有xss脚本的描述属性...
而对于其他动作,我做了一个简单的ajax帖子.
为什么验证输入不适用于这种JSON ajax帖子?我怎样才能阻止整个网站上的xss这种ajax请求?
谢谢
这是因为 ValidateInput 仅适用于 FormValueProvider。至于JsonValueProvider,您需要推出自己的机制。
步骤 1) 创建标记属性CustomAntiXssAttribute
2) 通过子类化创建自定义模型绑定器DefaultModelBinder
3) 覆盖BindProperty
方法 -> 获取底层属性的尝试值,对其进行清理并将其分配给视图模型属性。看一下这个。
编辑:替换该行var valueResult = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name);
以var valueResult = bindingContext.ValueProvider.GetValue((string.IsNullOrWhiteSpace(bindingContext.ModelName) ? string.Empty : bindingContext.ModelName + ".") + propertyDescriptor.Name);
支持嵌套 ViewModel。
归档时间: |
|
查看次数: |
817 次 |
最近记录: |