如何在不同的请求中发送 sql-query 的参数?
How to send parameters of an sql-query in a different request?
PostgreSQL 9.4
众所周知,JDBC-PreparedStatement 可以通过在不同于用于发送实际查询正文的查询中发送参数来防止 sql-注入攻击。
如何将这两个查询直接发送到数据库或者 RDBMS
不支持?我的意思是,preparedStatement 是否发挥其内部魔力并在不同的查询中发送查询参数,或者 RDBMS
s 原生支持?
prepareStatement不包含不同的参数值,只包含占位符(标有?)
con.prepareStatement("select cu_id, cu_last_name from customer where cu_id between ? and ?")
占位符(绑定变量)在执行前设置为所需值
stmt.setInt(1,100)
stmt.setInt(2,105)
并执行查询
stmt.executeQuery()
重要的是,数据库可以重用语句进行更多的执行,所以语句不会为每次执行完全解析(但细节取决于DBMS),可以提供更好的性能。
SQL 注入被阻止是因为只提供了参数值——不可能改变 SQL 查询文本。
PostgreSQL 9.4
众所周知,JDBC-PreparedStatement 可以通过在不同于用于发送实际查询正文的查询中发送参数来防止 sql-注入攻击。
如何将这两个查询直接发送到数据库或者 RDBMS
不支持?我的意思是,preparedStatement 是否发挥其内部魔力并在不同的查询中发送查询参数,或者 RDBMS
s 原生支持?
prepareStatement不包含不同的参数值,只包含占位符(标有?)
con.prepareStatement("select cu_id, cu_last_name from customer where cu_id between ? and ?")
占位符(绑定变量)在执行前设置为所需值
stmt.setInt(1,100)
stmt.setInt(2,105)
并执行查询
stmt.executeQuery()
重要的是,数据库可以重用语句进行更多的执行,所以语句不会为每次执行完全解析(但细节取决于DBMS),可以提供更好的性能。 SQL 注入被阻止是因为只提供了参数值——不可能改变 SQL 查询文本。