我在 How to prevent SQL Injection in hibernate? 看到了 HQL SQL 注入(inject)主题.但我不明白 Query.setParameter("<parameter name>",<parameter value>)
是怎么做到的
消除SQL注入(inject),
如果恶意用户通过 true = true
到以下 HQL,String hqlString = "from Item item where name= '"+nameValue+"'";
然后他可以将它传递给query.setString("name"+ nameValue)
还!
setString() 及其所有姊妹方法是否有任何过滤器来检查 SQL 注入(inject)?
最佳答案
JDBC 或 Hibernate 驱动程序将在执行查询之前适本地转义此数据;确保数据仅作为数据使用。
在执行查询之前,驱动程序会转义如下字符:
- ;(查询分隔符。)
- '(字符数据字符串分隔符。)
- --(注释分隔符。)
关于java - 命名参数查询如何阻止 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727579/