【问题标题】:Spring JPA - Prepared Statement Queries?Spring JPA - 准备好的语句查询?
【发布时间】: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);

如果这不使用准备好的语句,我该如何避免发生任何不好的事情?

提前谢谢你

【问题讨论】:

    标签: mysql sql spring spring-boot spring-data-jpa


    【解决方案1】:

    Prepared 语句有助于避免 sql 注入。

    就 spring data jpa 而言,它默认接受 xml、@NamedQuery 或 @Query 参数化,因此无需担心。

    【讨论】:

    • 所以它已经参数化了?如果用户输入恶意SQL不会影响数据库,例如?
    • 是的,我们通常会在检查输入之前进行一些验证,尤其是字符串。
    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多