SQL Server 的全文搜索 CONTAINS() 容易受到 SQL 注入的影响吗?



在我们的代码库中,我们使用Hibernate并使用它的Restrictions.sql()方法使用MS SQL Server的全文搜索。sqlconstraint是使用CONTAINS(column_name, search_text)谓词构建的,其中search_text是用户输入的文本。

Restrictions.sqlRestriction("CONTAINS(" + column_name + ", ?)", """ + userInput + "*"", StandardBasicTypes.STRING)

Is thisCONTAINS()方法易受SQL注入?

我不太了解SQL注入,但根据我读过它只会影响,如果你正在搜索文本的一部分在一列使用"喜欢",在这里我们搜索整个用户文本,所以我认为它很好,但它更好的符合做一些注入攻击自己作为测试。最好在这个话题上搜索更多,或者等待一些好的答案

是的,这种注入是脆弱的。这并不是说CONTAINS本身导致了这个问题,而是注射才是问题所在。

不幸的是,CONTAINS()不接受作为列名的变量,因此需要注入它。为了保证这个注入的安全性,你必须根据白名单检查它。

如果根据白名单进行验证,则不存在漏洞。直接接受用户输入。

相关内容

  • 没有找到相关文章

最新更新