[英]Is SQL Server's full text search CONTAINS() vulnerable to SQL Injections?
在我們的代碼庫中,我們使用 Hibernate 並使用它的 Restrictions.sql() 方法使用 MS SQL Server 的全文搜索。 sqlRestriction 是使用 CONTAINS(column_name, search_text) 謂詞構建的,其中 search_text 是用戶輸入的文本。
Restrictions.sqlRestriction("CONTAINS(" + column_name + ", ?)", "\\"" + userInput + "*\\"", StandardBasicTypes.STRING)
這個CONTAINS()方法是否容易受到 SQL 注入的攻擊?
我對 SQL Injection 了解不多,但據我所知,它只會影響您使用“like”搜索列中的部分文本,這里我們正在搜索整個用戶文本,所以我認為它很好,但它最好通過自己進行一些注入攻擊作為測試來符合。 更好地搜索有關該主題的更多信息或等待一些好的答案
是的,這種注入是脆弱的。 這並不是說CONTAINS
本身導致了問題,問題在於注入。
不幸的是, CONTAINS()
不接受列名變量,因此需要注入它。 為了使此注入安全,您必須對照白名單進行檢查。
如果根據白名單進行驗證,則不存在漏洞。 不要只是直接接受用戶輸入到查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.