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