Checkmarx抱怨我们的Web应用程序中存在XSRF问题。我们正在将ASP.NET Web表单与框架4.0(而非MVC)一起使用
Checkmarx说: \ ABC.aspx.vb的第1760行的方法btnSubmit_Click从元素文本中的用户请求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
或
我认为上述解决方案应该可以起作用,并且可以保护我们的Web表单免受CSRF / XSRF的威胁,但是Checkmarx为什么无法检测到它?这是假阳性吗?
答案 0 :(得分:0)
建议检查 Checkmarx 门户(设置/扫描设置/查询查看器)中的 CxQL 查询,以了解 Checkmarx 如何发现漏洞,包括 Checkmarx 能够检测到的保护类型。
对于您的情况,请检查 CSharp/Cx/CSharp_Medium_Threat/XSRF 中的逻辑。
对于 Web 表单应用程序,查询 CSharp/Cx/General/Find_XSRF_Sanitize 用于查找您是否在应用程序中进行了任何保护。
正如 Find_XSRF_Sanitize 的评论所说:
<块引用>对于 ASP Web Forms,防止 XSRF 攻击的主要解决方案是 为页面的 ViewStateUserKey 属性分配一个唯一的标记。
还有
<块引用>AntiXsrfTokenKey
也被视为一种保护。
如果您使用 ViewStateUserKey 或 AntiXsrfTokenKey,则所有以与 ViewStateUserKey 或 相同方法定义的 http 交互请求AntiXsrfTokenKey 将被视为已清理的请求,并将从潜在的污染请求列表中删除。
请注意,在 CxDOM 树中,ViewStateUserKey 和经过消毒的请求具有共同的祖先,即方法声明。