我有一个REST控制器,它有一个方法deleteStudent,它接受两个参数studentId ( Long )和section ( String )。
@RequestMapping(value="/rest/deleteStudent/studentId/{studentId}/section/{section}", method = RequestMethod.DELETE)
public Student deleteStudent(@PathVariable Long studentId, @PathVariable String section){
return studentService.deleteStudent(studentId ,section);
}对于上面的代码,checkmarx抱怨这个参数值流过代码,并最终用于修改数据库内容。应用程序不需要对请求重新进行用户身份验证。这可能会导致跨站点请求伪造(XSRF)。
我试过Htmlutils.htmlescape (从春季网站)在部分,但没有运气。
如何解决车臣问题?
还有一件事,如果字段是长类型的,那么XSRF和SQL注入攻击是如何可能的?
发布于 2016-11-30 10:00:18
您确定它是在讨论studentId参数而不是section参数吗?
如果是真的,我会说是假阳性。
如果它讨论的是section参数,那么如果您的SQL请求是安全的(所以如果您使用ORM或准备好的语句,等等),我一点也不担心。
总的来说,在所有SQL注入的案例中,这都是一个假阳性。
尽管如此,对于CSRF攻击来说,您可能确实是脆弱的。
如果黑客让管理员加载页面,即使您不实现CSRF保护,即使没有访问权限,它也可以删除任何用户帐户。
发布于 2021-06-07 11:33:41
Security(https://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html)的评论:
当你使用CSRF保护?我们的建议是使用CSRF保护的任何请求,可由浏览器处理的正常用户。如果您只创建非浏览器客户端使用的服务,则可能要禁用CSRF保护。
如果您的服务仅由非浏览器客户端使用,则可以从预置中排除XSRF查询。
如果没有,下面是Checkmarx如何检查是否验证了跨站点请求伪造令牌(Java/Cx/General/Find_XSRF_Sanitize):
getNewXsrfToken、setRpcToken、verifyCSRFToken、isTokenValid这些方法调用和变量名用于方法去噪。从这些方法的方法主体中,所有这些请求都被认为是消毒的,并从潜在的污染请求列表中删除。
CxQL查询Find_Interactive_Inputs找到的所有这些源代码元素都是请求。
https://stackoverflow.com/questions/40885060
复制相似问题