PHP mysqli sınıf sql enjeksiyon karşı% 100 koruma sağlar mı?

2 Cevap php

Ben makale ve mysqli'nin hakkında birçok soru gördüm ve hepsi de sql enjeksiyon karşı koruduğunu iddia ediyor. Ama aptal kanıt, ya da etrafında almak için bir yol hala var. Ben cross site scripting veya phishing saldırıları, sadece sql enjeksiyon ilgilenmiyorum.

Ne ile başlamak dedi olmalı ben hazırlanmış deyimleri kullanıyorum olmasıdır. Ben mysqli'nin ile ne demek olduğunu. Ben herhangi bir dize birleştirme olmadan hazırlanmış deyimleri kullanırsanız, o zaman kusursuz olduğunu?

2 Cevap

Ama aptal kanıt, ya da etrafında almak için bir yol hala var.

Hayır, siz ne yaptığınızı bilmek zorunda. Eğer bağlı parametreleri (mysqli ile birlikte gelen bir özellik) kullanıyorsanız, enjeksiyon tip saldırılara karşı tamamen güvenli from this attack vector. Bu sizi engellemez - programcı - dizeleri doğrudan gömme, ve böylece enjeksiyon saldırıları sağlayan dan. Istediğiniz gibi özelliğini kullanmak zorunda.

Re: Edit

Ne ile başlamak dedi olmalı ben hazırlanmış deyimleri kullanıyorum olmasıdır. Ben mysqli'nin ile ne demek olduğunu. Ben herhangi bir dize birleştirme olmadan hazırlanmış deyimleri kullanırsanız, o zaman kusursuz olduğunu?

Şaşmaz hâlâ böyle tehlikeli bir kelimedir. Ama hazırlanan tablolar üzerinden bağlı değişkenler için enjeksiyon saldırılarına karşı güvenli. Bağlı parametreler SQL sorgusu ayrı iletilir olmasıdır. "Geleneksel" embed-string yaklaşımla, veritabanı sunucusu giriş ayrıştırmak gerekiyor ve bu (Charsets vs) kenar durumlarda bir sürü vardır. Veriler ve sorgu ayrı gönderildiğinde, (en azından değişken veri ayrıştırma değil) oluyor hiçbir gerçek ayrıştırma yoktur.

Sadece şimdi yerine mysql_real_escape_string çağıran hazırlanmış ifadeleri kullanabilirsiniz geliştirici, daha kolay yapıyor yapar, sql enjeksiyon gelen eski mysql modülün daha iyi korumak değildir.