【问题标题】:Using preparedStatement to prevent SQL injection使用preparedStatement防止SQL注入
【发布时间】:2016-11-16 08:46:25
【问题描述】:

我有一个这样的 SQL 查询:

StringBuilder sSelect = new StringBuilder("SELECT C ");
StringBuilder sFrom = new StringBuilder(" FROM CUSTOMER as C ");

if (phoneNumber != null)
{
  sFrom.append(" where C.number = ").append(phoneNumber);
}

我想要一个防止 SQL 注入的解决方案。像这样的东西很好用:

sWhere.append(" I.indicNom=").append(":sPhoneNumber").append(" ");
parameters.put("sPhoneNumber", phoneNumber);

我的目的是使用preparedStatement。是否可以逐步创建 SQL?

例如:

select * from tableX if(condition) {add where X=:Y } else {do nothing}

而不是

select * from tableX where X=?

【问题讨论】:

  • 你用的是什么SQL引擎,会和答案相关。
  • @ScottChamberlain 我正在使用持久性 jdbc

标签: prepared-statement sql-injection


【解决方案1】:

先验没有发现和预防所有类型的 SQL 注入攻击的通用方法。

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2017-11-11
    • 2013-05-24
    相关资源
    最近更新 更多