Pg_escape_string veya bir dize sterilize için yeterli mysql_escape_string mı?

5 Cevap

Pg_escape_string veya bir veritabanı tabloya veri takmadan önce bir dize sterilize için yeterli mysql_escape_string mı?

5 Cevap

Kelime "sterilize" son derece şüphelidir. Bu bazı karakterler "kötü" olduğunu ve kaynakta filtrelenmiş olması bir dünya görüşünü ifade eder. Bu yanlış olduğunu.

SQL sorgusu gitmek için uygun formatta metin almıyorum "kötü" karakterleri kaldırma konusunda, kendi SQL değişmez forma out-of-band karakterleri kaçmaktır. Eğer (örneğin bir telefon numarası içinde hiçbir harf vardır, veya istenmeyen kontrol karakterleri kurtulmak doğrulayarak) uygulama için giriş kullanıcı girişi doğrulamak istiyorsanız, o zaman iyi. Ama bu uygulamaya özel bir doğrulama endişe, ve SQL kaçan veya HTML kaçan ile ilgisi tamamen farklı bir konudur. Bu çıktı aşamalı endişeleri vardır.

mysql_escape_string, potansiyel güvenli değişmez bir SQL dizesinin eklenmesi için metin kaçmak için yeterli değildir. Kodlama, ya da olmayan bazı varsayılan SQL sözdizimi seçenekleri gibi bazı Doğu Asya karakter setlerini kullanarak olabilecek bir bağlantıda, SQL-enjeksiyon izin verebilir biçimlendirilmiş dizeleri üretecektir. mysql_real_escape_string iyidir. Ancak, parameterised sorgular sorunu önlemek ve nerede kullanılabilir tercih edilmelidir.

pg_escape_string mysql_real_escape_string, bu yüzden güvenli olması için beklediğiniz yapar gibi, bağlantı kullanır. Ama yine de, parametreler! In pg_ Eğer pg_query_params olsun böylece onları kullanmak için hiçbir bahane yok.

Veri - evet. Sadece çok tırnak içine unutmayın.

Kuralları kaçan ortalama PHP programcısı için çok karmaşık görünüyor çünkü Ama parametrized sorgular, daha iyi kabul.

Kaçan veya parametreler ya tanıtıcı veya operatörleri ile ilgisi olduğunu unutmayın. Say, alan adları tüm dezenfekte edilemez. Kaçmak çok LİMİT parametreleri ile yardımcı olamaz.

Hayır.

Körü körüne mysql_real_escape_string SQL enjeksiyon saldırıları önlemek için yeterli değildir çağırıyor. Manuel:

X00 \, \ n, \ r, \, ', "ve \ x1a: mysql_real_escape_string () aşağıdaki karakterleri ters slash MySQL kütüphane fonksiyonu mysql_real_escape_string, çağırır.

Not: mysql_real_escape_string ()% kaçış ve _ değildir. Bu gibi, GRANT, veya REVOKE ile birlikte eğer MySQL joker vardır.

(Başka yerde bak yorum)

Evet.

Hayır. Ayrıca http://htmlpurifier.org/ XSS saldırıları için HTML Arıtma girdileri olabilir.