当请求验证已经处于保护状态时,需要清理用户输入

时间:2015-07-17 14:28:23

标签: c# asp.net asp.net-mvc validation

Request Validation是一种强大的机制,可以防止通过请求向服务器注入恶意代码。这是在服务器端完成的,因此无论是否有任何客户端验证已经完成,可以确定是否会发生异常,然后会自动抛出异常。

我的问题: 虽然我们有"请求验证"在手,还有必要消毒请求吗?

我正在使用Asp.net MVC 5.0

PS: 我只是在网络(不是数据库或其他)的背景下谈论它及其潜在的漏洞(例如XSS)。

2 个答案:

答案 0 :(得分:1)

是的!如果没有正确处理,ASP.NET眼中有很多完全有效的输入可能会导致应用程序出现问题。

例如,如果有人在请求中传递了一些数据,并且您没有正确地在数据层中对查询进行参数化,则输入:

apt-get install dos2unix    
find . -name "*.php" -exec dos2unix {} \;

可能导致此查询:

x'; DROP TABLE users; --

哦,不!您已丢失了“用户”表格!

无论请求验证如何,您都应始终将用户输入视为敌对。 This演示了一些请求验证无法保存皮肤的方案。

呈现用户提供的输入时的HTML编码非常重要...切勿使用SELECT FieldList FROM Users WHERE Email = 'x'; DROP TABLE Users; -- 呈现任何不受信任的输入,并注意HtmlHelpers正确编码来自用户的任何内容。

深度防御很重要。将请求验证视为该过程的一部分。

答案 1 :(得分:0)