2016-11-30 117 views
0

我有一個REST控制器,它有一個方法deleteStudent接受兩個參數 studentId這是Longsection這是StringCheckMarx XSRF攻擊問題

@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(來自spring web util)的部分,但沒有運氣。

如何擺脫checkmarx問題?

還有一件事情,如果字段是Long類型,XSRF和SQL注入攻擊是可能的?

回答

0

你確定它是在說studentId參數,而不是section參數?

如果確實如此,我會說這是誤報。

如果是在談論section參數,如果您的SQL請求是安全的(如果您使用ORM或準備好的語句等),我完全不用擔心。總體而言,我認爲這是SQL注入的所有情況下的一個誤報。

這就是說,對於CSRF attacks,你可能確實是脆弱的。

如果黑客讓管理員加載頁面,即使沒有訪問權限,也可以刪除任何用戶帳戶,如果你沒有實現CSRF保護。

+0

我已經實現了添加獨特csrf令牌的過濾器,但它仍然抱怨csrf攻擊 – sar

+0

如果您確定CSRF保護工作正常,那麼它可能是誤報。我不知道你正在使用的工具,但也許它不能夠檢測到有保護,特別是如果它只是分析代碼,而不是功能測試... – AntoineB

+0

@saurabh這是什麼過濾器?你的代碼片段不包含任何反csrf標記... – yaloner