Xss支持 - ASP.Net web api

dro*_*gon 4 asp.net-web-api

是否有内置支持验证Web API中的恶意输入,类似于MVC的表单?

如果没有,有人可以建议一个"全局"过滤器/消息inpector /什么来验证恶意输入?我试图避免单独验证我的所有模型/参数......

dma*_*son 6

不,我不相信有这样的支持.这就是原因.Web Forms/MVC的输入验证支持是权宜之计.但编码输出是更好的XSS修复; 验证输入不能很好地工作,因为输入"坏"取决于你将如何输出它(作为HTML元素源的一部分,作为JS源的一部分,在HTML属性值中,作为SQL查询的一部分)等).

因此,我建议不要使用通用的全局输入验证作为XSS问题的解决方案.相反,请确保在输出输入之前始终正确编码输入(或将输入传递到另一个层,例如SQL DB).对于输出,如果您使用常规Web API机制返回数据(带有内容协商/格式化程序的模型类),格式化程序应该为您处理特定于内容类型的编码.


Bad*_*dri 5

我相信XSS与ASP.NET Web API无关.这就是我这么认为的原因.假设在请求正文中,我说我得到了这样的JSON "input": "<script>alert('hello');</script>",并且web API将"输入"存储到数据库中,并将其按原样绑定到数据库中并在后续GET请求中按原样检索它并将其发送出去对于客户来说,它仍然可以.客户有责任确保正确转义此数据.因此,当此输入属性序列化为Web应用程序时,在写入浏览器之前,客户端Web应用程序必须进行HTML编码.执行此操作的Web API通常没有意义,因为其他客户端可以使用Web API,例如XSS可能不适用的WPF应用程序.或者我错过了你想到的任何具体案例?