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'가 누군가가 SQL 문자열을 변경할 가능성이 있다고 생각하지만, 그럴 가능성은 희박합니다. – Zutty
StringBuilder로 만들 필요가 있습니까? 여기 짧은 예제에서 문자열을 변경 가능하게 만드는 데 어떤 시점도 보이지 않습니다. – nhahtdh
@Zutty 네, 그렇게하는 것이 상당히 어려워 보일 것입니다. – Flanfl