Checkmarx在我们的web应用程序中抱怨XSRF问题。我们使用的是框架4.0的ASP.NET web表单(而不是MVC)。
Checkmarx说:方法btnSubmit_Click在\ABC.aspx.vb的第1760行从来自元素文本的用户请求URL获得一个参数。此参数值在代码中流动,并最终用于修改数据库内容。应用程序不需要对请求重新进行用户身份验证。这可能会导致跨站点请求伪造(XSRF)。
对如何防止XSRF从ASP.NET Webform应用程序中有什么想法吗?
我们尝试了很多解决方案,但没有一个通过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不能检测到它呢?这是假阳性吗?
发布于 2021-06-07 09:35:47
建议检查Checkmarx中的CxQL查询(设置/扫描设置/查询查看器),以了解Checkmarx如何查找漏洞,包括Checkmarx能够检测到的保护类型。
对于您的情况,请检查CSharp/Cx/CSharp_Medium_威胁/XSRF中的逻辑。
对于Web表单应用程序,查询CSharp/Cx/General/ find _XSRF_Sanitize用于查找应用程序中是否有任何保护。
正如Find_XSRF_Sanitize的评论所说:
对于ASP.WebForms,防止XSRF攻击的主要解决方案是为页面的ViewStateUserKey属性分配唯一令牌。
也是
AntiXsrfTokenKey
也被认为是一种保护。
如果使用ViewStateUserKey或AntiXsrfTokenKey,,那么在与ViewStateUserKey或AntiXsrfTokenKey相同的方法中定义的所有http交互请求都将被视为净化请求,并将为潜在的受污染请求列表删除。
注意,在ViewStateUserKey树中,CxDOM和净化请求有共同的祖先,这是方法声明。
https://stackoverflow.com/questions/55029419
复制相似问题