Spring JPA - 准备好的语句查询?
Posted
技术标签:
【中文标题】Spring JPA - 准备好的语句查询?【英文标题】:Spring JPA - Prepared Statement Queries? 【发布时间】:2020-05-20 10:29:57 【问题描述】:我正在构建一个 Spring REST 服务器应用程序,并且正在执行一些本机查询以从我的数据库中检索数据。从学校的教学中,他们建议将所有查询都做prepared statements,以阻止用户在输入框中输入有害的SQL。
我试图做一些研究,但没有找到具体的答案。 Spring是否默认使用准备好的语句?这是我要清理的查询之一的 sn-p:
@Query(value = "DELETE FROM userMeds WHERE username = ?1 AND drug_id = ?2", nativeQuery = true)
void deleteByIdentity(String username, int drug_id);
如果这不使用准备好的语句,我该如何避免发生任何不好的事情?
提前谢谢你
【问题讨论】:
【参考方案1】:Prepared 语句有助于避免 sql 注入。
就 spring data jpa 而言,它默认接受 xml、@NamedQuery 或 @Query 参数化,因此无需担心。
【讨论】:
所以它已经参数化了?如果用户输入恶意SQL不会影响数据库,例如? 是的,我们通常会在检查输入之前进行一些验证,尤其是字符串。以上是关于Spring JPA - 准备好的语句查询?的主要内容,如果未能解决你的问题,请参考以下文章
使用准备好的语句时出现 Camel -Spring SQLException
Spring Data Jpa 使用@Query标注自定义查询语句
Spring Data Jpa 使用@Query标注自定义查询语句