gpt4 book ai didi

java - 如何在不同的请求中发送sql查询的参数?

转载 作者:行者123 更新时间:2023-12-01 11:11:13 26 4
gpt4 key购买 nike

PostgreSQL 9.4

众所周知,JDBC-PreparedStatement可以通过在查询中发送与发送实际查询主体不同的参数来防止 SQL 注入(inject)攻击。

如何将这两个查询直接发送到数据库,或者 RDBMS 不支持?我的意思是,preparedStatement 是否发挥其内部魔力并在不同的查询中发送查询参数,或者 RDBMS 本身支持该操作吗?

最佳答案

prepareStatement 不包含不同的参数值,仅包含占位符(用 ? 标记)

 con.prepareStatement("select cu_id, cu_last_name from customer where cu_id between ? and ?")

占位符(绑定(bind)变量)在执行之前设置为所需的值

 stmt.setInt(1,100)
stmt.setInt(2,105)

并且执行查询

 stmt.executeQuery()

重要的事实是,数据库可以重用该语句以进行更多执行,因此每次执行时不会完全解析该语句(但详细信息取决于 DBMS),这可以提供更好的性能。由于仅提供参数值,因此无法更改 SQL 查询文本,从而防止了 SQL 注入(inject)。

关于java - 如何在不同的请求中发送sql查询的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32346755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com