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.
Hatalı
Bölüm başlığı “Hatalı”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();Düzeltme
Bölüm başlığı “Düzeltme”Ham SQL’de kullanıcı değerlerini asla birleştirmeyin; her zaman bağlı parametre kullanın.