当请求验证已经处于戒备状态时,是否需要对用户输入进行消毒
本文关键字:用户 输入 是否 验证 请求 戒备状态 | 更新日期: 2023-09-27 18:03:25
请求验证是一种强大的机制,可以防止通过请求向服务器注入恶意代码。这是在服务器端完成的,所以无论客户端验证是否完成,都可以确定是否有不寻常的事情发生,然后将自动抛出异常。
我的问题:而我们有&;Request validation&;现在,还需要对请求进行消毒吗?
我正在使用Asp.net MVC 5.0
PS:我只是在谈论web(不是数据库或其他东西)及其潜在漏洞(如XSS)的背景下。
是的!在ASP中有大量完全有效的输入。如果处理不当,可能会导致应用程序出现问题。
例如,如果有人在请求中传递了一些数据,而你没有正确地在数据层参数化查询,那么这个输入:
x'; DROP TABLE users; --
可能导致以下查询:
SELECT FieldList
FROM Users
WHERE Email = 'x'; DROP TABLE Users; --
哦不!您丢失了Users表!
无论请求是否验证,您都应该始终将用户输入视为恶意输入。这演示了一些场景,其中请求验证无法挽救您的皮肤。
当你呈现用户提供的输入时,HTML编码是很重要的…永远不要使用@Html.Raw
呈现任何不可信的输入,并注意HtmlHelpers正确编码来自用户的任何内容。
纵深防御很重要。请将请求验证视为该过程的一部分。
这是关于MSDN上的Xss和请求验证的链接
https://msdn.microsoft.com/en-us/library/vstudio/hh882339%28v=vs.100%29.aspx?f=255& MSPPError = -2147217396