gpt4 book ai didi

java - 将字符串插入PreparedStatement

转载 作者:行者123 更新时间:2023-11-29 09:09:46 27 4
gpt4 key购买 nike

我正在使用使用Statement的MySQL包装方法,我想将其更改为PreparedStatement以增强安全性,不幸的是,该方法要求允许任意SQL作为参数,例如“WHERE id=5” .

我可以通过PreparedStatement 以某种方式允许这种情况吗?

如果没有,您能否建议我使用另一种方法来清理数据库输入以防止 SQL 注入(inject)?

谢谢

编辑:抱歉,不清楚,整个“WHERE id=5”位每次都可以更改,而不仅仅是 5。

最佳答案

如果您的意思是是否可以创建动态PreparedStatements,那么,只要您能够控制替代方案,就可以。例如(伪代码):

  sql = "SELECT * FROM EMAIL WHERE TYPE = ?";
if(haveId)
sql += " AND id=?";
st = createPreparedStatement(sql);
st.setString(1,type);
if(haveId)
st.setString(2,id);

当然,如果您的查询有很多变体,这会变得复杂。例如,参见here 。如果您的查询完全是任意的(如果您的用户可以输入“WHERE”本身)...您就有麻烦了。

关于java - 将字符串插入PreparedStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968342/

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