İçeriğe geç

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.

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();

Tüm kullanıcı girdileri için bağlı parametreli PreparedStatement kullanın; SQL’i hiçbir zaman dize birleştirmeyle oluşturmayın.