为什么通过第三方工具测试我的 asp.net mvc 2 应用程序时验证无法正常工作

本文关键字:验证 常工作 工作 应用程序 工具 第三方 测试 我的 mvc net asp | 更新日期: 2023-09-27 18:36:28

我正在使用一个 ASP.NET MVC 2 应用程序,该应用程序对 DB2 表执行基本的 CRUD 操作。当我通过简单地加载我的应用程序来测试我的应用程序时,如果我将字符放在数字字段中或将数字放在日期字段中,或者将某种与我的视图模型中的数据类型不兼容的其他形式的数据,MVC 会在其末端执行正确的错误处理,并且视图将返回相应的模型状态错误消息,如 Html.ValidationSummary() mvc 帮助程序所示。

但是,当我使用 IBM AppScan 等程序运行测试或使用 Fiddler2 伪造 POST 请求时,应用程序会翻转。

我正在以 2 种不同的方式执行我认为是同一种测试,并得到不同的结果。

我还使用MVC的AntiForgeryToken系统,但这并没有多大好处,因为这些程序只是扫描请求数据,找到令牌,并确保它包含在伪造的POST中。

另请注意,我在服务器端使用 DataAnnotations 来处理其中的几个验证,而不是获得注释应该返回的错误,页面被重定向到应用程序错误页面以查找未捕获的异常。

我实际上对这一切感到非常困惑。我错过了什么?

为什么通过第三方工具测试我的 asp.net mvc 2 应用程序时验证无法正常工作

LukLed 的评论让我对事情进行了理智检查,他是绝对正确的。我做错了。当我在 Fiddler 中伪造请求正文详细信息时,我以一种我知道数据不正确的方式执行此操作,但数据也属于正确的验证,因此会捕获错误。我的测试(例如为仅数字字段提交字符)(我曾认为这是在 AppScan 测试应用程序时轰炸应用程序的那种事情)给出了正确的结果。

但是,LukLed 的评论让我真正查看了 AppScan 发送的 POST 数据。在每个应用程序错误中,字段都是视图模型上的字符串。我允许数据通过,而无需对长度和"字符串数据右截断"进行艰苦检查。随之而来的是 SQL 错误。这也表明我需要更好地清理数据,因为 AppScan 提交的一些值如下所示:

'../../../../../../../../../../../../bin/id|' 作为帐号字段和

Foobar%0d%0aAppScanHeader:%20AppScanValue%2f1%2e2%2d3%0d%0aSecondAppScanHeader:%20whatever' 作为描述字段。

表单

提交中不应允许使用此类特殊字符。