Hazır Beyanlar Kullanma

Java ile PostgreSQL Veritabanına Sorgu Yazma

Miller Trujillo

Staff Software Engineer

Beyanların Sorunu

String query = "SELECT * FROM books WHERE title = '" + title + "'";
stmt.executeQuery(query);
  • SQL enjeksiyonu, kullanıcı girdisi doğrudan SQL'e eklendiğinde olur
String title = "' OR 1 = 1 --";
  • Saldırganlar sorgu mantığını değiştirebilir
String query = "SELECT * FROM books WHERE title = '' OR 1 = 1 --'";

$$

  • SQL Enjeksiyonu verilerimizi değiştirebilir 🚫
Java ile PostgreSQL Veritabanına Sorgu Yazma

SQL Enjeksiyonu

String query = "SELECT * FROM books WHERE title = '" + title + "'";
stmt.executeQuery(query);
title = "'; DELETE FROM books; --"
query = "SELECT * FROM books WHERE title = ''; DELETE FROM books; -- REST of query"
  • Tüm kayıtlar silinecek 🔄

$$

  • İzinleri sınırlamak yardımcı olur, ama yeterli değildir
  • Saldırganlar hassas verileri sorgulayabilir
Java ile PostgreSQL Veritabanına Sorgu Yazma

Hazır Beyanlar

  • Yer tutucular kullanan önceden derlenmiş SQL beyanı
String sql = "SELECT * FROM books WHERE title = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setString(1, "Alice in Wonderland");
ResultSet rs = pstmt.executeQuery();
  • Parametreler kaçış karakteriyle işlenir ve asla çalıştırılabilir SQL olarak değerlendirilmez 🔒
Java ile PostgreSQL Veritabanına Sorgu Yazma

Birden Fazla Parametre ile Çalışma

String sql = "SELECT * FROM books WHERE title = ? AND publication_year = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setString(1, "Alice in Wonderland"); pstmt.setInt(2, 1998);
ResultSet rs = pstmt.executeQuery();
  • Her veri türünün kendi ayarlayıcı metodu vardır
Java ile PostgreSQL Veritabanına Sorgu Yazma

Haydi pratik yapalım!

Java ile PostgreSQL Veritabanına Sorgu Yazma

Preparing Video For Download...