1
我使用FindBug
以及插件Find Security Bugs
來幫助我找到我的代碼中的安全漏洞。我不確定爲什麼有些代碼被標記爲易受SQL注入攻擊。查找安全漏洞 - 真正的SQL注入還是誤報?
這裏有兩個例子:
final StringBuilder queryString = new StringBuilder("SELECT users.login FROM Users users, Table table WHERE users.idUser = table.users.idUser");
Query query = session.createQuery(queryString.toString()); // This line is flagged
StringBuilder queryString = new StringBuilder("SELECT data FROM Table ");
queryString.append("WHERE table.idEntreprise = :id");
Query query = session.createQuery(queryString.toString()).setInteger("id", id); // This line is flagged
這是個假陽性或我錯過了什麼?如果我理解正確,使用createQuery()
和setX()
應該足夠了嗎?
我想,理論上來說,因爲它是一個StringBuilder而不是一個String常量,有人可能會改變SQL字符串,但這似乎不太可能。 – Zutty 2013-04-26 09:37:10
是否有必要使它成爲StringBuilder?從這裏的簡短例子來看,我看不出讓字符串變化的任何一點。 – nhahtdh 2013-04-26 09:40:27
@ Zutty是的,這似乎很難做到。 – Flanfl 2013-04-26 12:41:05