UPDATE `company` SET `itnumber` = '595959' WHERE (id = 932)
因此itnumber的值来自该公司的用户输入。我想确保我能够防止任何类型的SQL注入。因此,用户输入595959,我在动态查询中将该值创建为'595959'。这个查询中是否仍然可能存在sql注入攻击?我知道使用准备语句来防止sql注入,但准备语句可能需要我的应用程序的很多开发工作,所以我正在寻找更少的时间和更简单的方法来修复大部分可以注入的sql语句。此查询是否可以进行SQL注入?
StringBuffer sb = new StringBuffer();
sb.append(" UPDATE ");
sb.append(DB.quote(table));
sb.append(" SET ");
/* logic if column value has changed */
/* if yes */
sb.append(DB.quote(column.name));
sb.append(" = ");
sb.append(column.getSQLvalue());
sb.append(" WHERE (id = ");
sb.append(columns[0].getSQLvalue());
sb.append(")");
execute(sb.toString());
分析SQL注入是否可行需要查看生成SQL的* source *,而不是生成的SQL。 – Gabe 2011-02-28 20:31:24
为什么'java'标签? – 2011-02-28 20:35:52
@Alexander Pogrebnyak - 猜测,SQL字符串可能是在java应用程序中构建的。 – Oded 2011-02-28 20:36:35