在我們的代碼庫中,我們使用 Hibernate 并使用它的 Restrictions.sql() 方法使用 MS SQL Server 的全文搜索。sqlRestriction 是使用 CONTAINS(column_name, search_text) 謂詞構建的,其中 search_text 是用戶輸入的文本。
Restrictions.sqlRestriction("CONTAINS(" column_name ", ?)", "\"" userInput "*\"", StandardBasicTypes.STRING)
這個CONTAINS()方法是否容易受到 SQL 注入的攻擊?
uj5u.com熱心網友回復:
我對 SQL Injection 不太了解,但據我所知,它只會影響您使用“like”搜索列中的部分文本,這里我們正在搜索整個用戶文本,所以我認為它很好,但它最好通過自己進行一些注入攻擊作為測驗來符合。更好地搜索有關該主題的更多資訊或等待一些好的答案
uj5u.com熱心網友回復:
是的,這種注入是脆弱的。這并不是說它CONTAINS本身導致了問題,問題在于注射。
不幸的是,CONTAINS()列名不接受變數,因此需要注入。為了使此注入安全,您必須對照白名單進行檢查。
如果根據白名單進行驗證,則不存在漏洞。不要不只是直接接受用戶輸入到查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/323659.html
標籤:sql sql-server 休眠 sql注入
上一篇:回圈遍歷兩個日期列
