0

Checkmarx 抱怨我们的 Web 应用程序中存在 XSRF 问题。我们正在使用带有框架 4.0(不是 MVC)的 ASP.NET Web 表单

Checkmarx 说:方法 btnSubmit_Click 在 \ABC.aspx.vb 的第 1760 行从元素文本中获取用户请求 URL 的参数。该参数值流经代码,最终用于修改数据库内容。应用程序不需要为请求更新用户身份验证。这可能会启用跨站点请求伪造 (XSRF)。

关于如何防止 ASP.NET Webform 应用程序中的 XSRF 的任何想法?

我们尝试了很多解决方案,但没有一个通过 Checkmarx:以下是我们尝试的一些方法:
https
://software-security.sans.org/developer-how-to/developer-guide-csrf 或

http://willseitz-code.blogspot.com/2013/06/cross-site-request-forgery-for-web-forms.html?m=1

https://security.stackexchange.com/questions/187740/two-solutions-for-csrf-on-owasp-for-asp-net-webforms

我认为上述解决方案应该可以保护/防止我们的 Web 表单免受 CSRF/XSRF 风险,但为什么 Checkmarx 无法检测到它?这是误报吗?

4

1 回答 1

0

建议检查 Checkmarx 门户(设置/扫描设置/查询查看器)中的 CxQL 查询,以了解 Checkmarx 如何发现漏洞,包括 Checkmarx 能够检测到的保护类型。

对于您的情况,请检查 CSharp/Cx/CSharp_Medium_Threat/XSRF 中的逻辑。

对于 Web 表单应用程序,查询 CSharp/Cx/General/Find_XSRF_Sanitize 用于查找您是否在应用程序中进行了任何保护。

正如 Find_XSRF_Sanitize 的评论所说:

对于 ASP Web 窗体,防止 XSRF 攻击的主要解决方案是为页面的 ViewStateUserKey 属性分配一个唯一令牌。

AntiXsrfTokenKey

也被认为是一种保护。

如果您使用ViewStateUserKeyAntiXsrfTokenKey ,所有与ViewStateUserKeyAntiXsrfTokenKey定义在同一方法中的 http 交互请求都将被视为已清理的请求,并且将被删除用于潜在的污染请求列表。

请注意,在 CxDOM 树中,ViewStateUserKey和经过清理的请求具有共同的祖先,即方法声明。

于 2021-06-07T09:35:47.493 回答