İçeriğe geç

Ham SQL Injection Riski (ARCH4055)

Anahtar java.orm.raw-sql-injection-risk · Önem critical · Kategori orm

Ham SQL’i string interpolasyonu ile kurmak hem SQL injection açar hem de sorgu plan cache’ini bozar. Değerleri bağlı parametrelerle (bound parameters) geçirin.

String sql = "SELECT * FROM users WHERE email = '" + email + "'";
Query q = entityManager.createNativeQuery(sql, User.class);
List<User> users = q.getResultList();
Query q = entityManager.createNativeQuery(
"SELECT * FROM users WHERE email = :email", User.class);
q.setParameter("email", email);
List<User> users = q.getResultList();

Ham SQL’de kullanıcı değerlerini asla birleştirmeyin; her zaman bağlı parametre kullanın.