SORU
28 Kasım 2009, CUMARTESİ


Java - string SQL enjeksiyon önlemek için kaçış

Bazı anti java yerde sql enjeksiyon ve çok zor "replaceAll" dize işlevini. iş bulma yaşıyorum koymaya çalışıyorum Sonuçta ihtiyacım olan bir işlevi olacak dönüştürmek varolan \ \\ " \" ' \' \n \\n böylece dize kullanılarak değerlendirilmiştir MySQL SQL enjeksiyon engellenir.

İşlevi ve tüm \\\\\\\\\\\ ile çalışıyordum bazı kod gözlerim deli yapıyoruz çaldı. Eğer herkes bunun bir örneği var olursa çok minnettar olurum.

CEVAP
28 Kasım 2009, CUMARTESİ


PreparedStatements SQL enjeksiyon imkansız çünkü gitmek için bir yoldur. Burada basit bir örnek, parametre olarak kullanıcının giriş alma:

public insertUser(String name, String email) {
   Connection conn = null;
   PreparedStatement stmt = null;
   try {
      conn = setupTheDatabaseConnectionSomehow();
      stmt = conn.prepareStatement("INSERT INTO person (name, email) values (?, ?)");
      stmt.setString(1, name);
      stmt.setString(2, email);
      stmt.executeUpdate();
   }
   finally {
      try {
         if (stmt != null) { stmt.close(); }
      }
      catch (Exception e) {
         // log this error
      }
      try {
         if (conn != null) { conn.close(); }
      }
      catch (Exception e) {
         // log this error
      }
   }
}

İsim ve e-posta ne olursa olsun, bu karakterleri doğrudan veritabanında yer alacak. Herhangi bir şekilde INSERT deyimi etkisi olmaz.

Kullandığınız bir veritabanı alanları ne bağlı olarak farklı veri türleri için farklı yöntemleri vardır. Eğer veritabanında bir TAMSAYI sütun varsa, örneğin,, setInt bir yöntem kullanmalısınız. The PreparedStatement documentation farklı yöntem ve veri ayar listelenmiştir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Developers

    Google Devel

    23 AĞUSTOS 2007
  • lilstevie89

    lilstevie89

    25 Mart 2011
  • PlugResearch

    PlugResearch

    22 Mart 2006