SQL enjeksiyonu (ARCH4100)
Anahtar java.security.sql-injection · Önem error · Kategori security · CWE CWE-89
SQL sorgusunu kullanıcı girdisiyle birleştirerek oluşturmak, saldırganların sorgu yapısını değiştirerek veri okumasına, değiştirmesine veya kimlik doğrulamayı atlamasına olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”String sql = "SELECT * FROM users WHERE name = '" + name + "'";Statement st = conn.createStatement();ResultSet rs = st.executeQuery(sql);PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE name = ?");ps.setString(1, name);ResultSet rs = ps.executeQuery();Düzeltme
Bölüm başlığı “Düzeltme”Tüm kullanıcı girdileri için bağlı parametreli PreparedStatement kullanın; SQL’i hiçbir zaman dize birleştirmeyle oluşturmayın.