我使用Struts2的框架和休眠,我提高,我並沒有開始一個系統,我提高了系統的某些功能,並實現它的刺。但是,他們掃描它使用Acunetix時,某處在登錄模塊,也有在系統中檢測到了一些威脅(警報),其中警告說:是否Hibernate的Query.setParameter使SQL注入可能
警報:SQL注入
嚴重性 :高
描述:此腳本可能容易受到SQL注入攻擊。
建議:您的腳本應該過濾來自用戶輸入的元字符。查看詳細信息以獲取有關修復此漏洞的更多信息。
然後,我檢查了腳本,這將是該警報的故障。舊開發人員使用Hibernate創建查詢。
List<UserBean> users = session.createQuery("from UserBean where username =?")
.setParameter(0,username)
.list();
我的問題是:
-Is這個查詢使用Hibernate無法避免SQL注入?
-Is .setParameter
應該是.setString
更具體以避免SQL注入?
或以上都不是?
謝謝你的時間。
這爲我解釋了很多,但爲什麼它警告即使我將它與名稱綁定,它在SQL注入中也很容易。 – msagala25
我完全不知道Acunetix工具,因此您必須向該專題的專家詢問爲什麼報告確實會這樣說。也許這只是因爲該工具沒有找到任何驗證輸入的代碼,並且它不知道Hibernate或準備好的語句是如何工作的。 –