Sobes.tech
Junior — Middle

Hangi sorgu türlerini en güvenli buluyorsunuz ve neden?

sobes.tech yapay zeka

AI'dan gelen yanıt

En güvenli olanlar, hazırlanmış (prepared) sorgular ve ORM sorgularıdır; bunlar giriş verilerini otomatik olarak kaçırır.

Bunun nedeni, bunların SQL enjeksiyonlarını önlemesidir — saldırganın kötü niyetli SQL kodunu kullanıcı girişi aracılığıyla enjekte etmesi durumunda.

Örnek:

  • Parametreli bir sorguda, parametreler SQL kodundan ayrı olarak iletilir, bu da sorgu yapısının değiştirilmesini engeller.

  • Stringlerin birleştirilmesinden farklı olarak, burada kullanıcı girişi doğrudan sorguya eklenir.

Örneğin, Java'da JDBC ile:

String sql = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, userInput);
ResultSet rs = ps.executeQuery();

Bu yaklaşım, şu şekilde olanlardan daha güvenlidir:

String sql = "SELECT * FROM users WHERE username = '" + userInput + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);

Bu nedenle, güvenlik için test ve geliştirmede parametreli sorgular kullanılması önerilir.