Asp.net web api Xss支持-ASP.NETWebAPI

Asp.net web api Xss支持-ASP.NETWebAPI,asp.net-web-api,Asp.net Web Api,是否有任何内置的支持来验证Web API中的恶意输入,类似于MVC表单 如果没有,是否有人建议使用“全局”过滤器/消息输入程序/任何东西来验证恶意输入?我试图避免单独验证所有模型/参数 我认为XSS与ASP.NET Web API无关。这就是为什么我这么认为。假设,在请求体中,假设我得到一个JSON,如下面的“输入”:“alert('hello');”,web API将绑定到某个属性的“输入”按原样存储到数据库中,并按原样在后续的get请求中检索它,并将其发送到客户端,这样仍然可以。客户有责任确

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


如果没有,是否有人建议使用“全局”过滤器/消息输入程序/任何东西来验证恶意输入?我试图避免单独验证所有模型/参数

我认为XSS与ASP.NET Web API无关。这就是为什么我这么认为。假设,在请求体中,假设我得到一个JSON,如下面的“输入”:“alert('hello');”,web API将绑定到某个属性的“输入”按原样存储到数据库中,并按原样在后续的get请求中检索它,并将其发送到客户端,这样仍然可以。客户有责任确保正确转义此数据。因此,当这个输入属性被序列化为web应用程序时,在它写入浏览器之前,客户端web应用程序必须进行HTML编码。Web API这样做通常没有意义,因为Web API可以被其他客户端使用,比如XSS可能不适用的WPF应用程序。或者我遗漏了您想要的任何具体案例?

为什么不使用
HttpUtility.HtmlEncode

不,我不相信有这样的支持。原因如下。Web表单/MVC的输入验证支持是一种权宜之计。但是编码输出是更好的XSS解决方案;验证输入并不完美,因为什么输入“不好”取决于您将如何输出它(作为HTML元素源的一部分,作为JS源的一部分,在HTML属性值中,作为SQL查询的一部分,等等)


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

输入应始终进行验证。去哪里并不重要。名称字段应返回名称字符串,而不是jpeg文件,或者根据您的环境返回SQL攻击。

您在ASP.NET MVC中引用的是哪种恶意验证输入?这是反irgery令牌验证吗?ValidateInput属性和执行此操作的基础asp.net基础结构…对,但这是一个全局解决方案吗?我仍然需要对每个字符串属性调用HtmlEncode。谢谢你的回答。那真是不幸。WebAPI和mvc之间的差异可能令人沮丧,因为它们有很多相似之处。虽然全局输入验证可能不是所有情况下的最佳解决方案,但我敢打赌它将是大多数应用程序的首选解决方案。根本不提供任何解决方案似乎是一种逃避:)请检查这一点,它将有助于提高您的内容质量,当然,它应该得到验证。但是,缺少的是框架中的基线xss验证。开发人员必须在代码中重复这样做。