Bu en azından hafif güvenli php kodu?

3 Cevap php

Ben her birini kodlama uzun bir form ve yerine sert üzerinden $ _POST içinde gönderilen değişkenler bir grup var bir bana aşağıdakileri yapmak için mysql_escape_string() ok? Bu aslında güvenli ve / veya uygulanabilir kodu ise bilmiyorum.

foreach ($_POST as &$post_item){
    $post_item = mysql_escape_string($post_item);
}

Ben kullanıyorum ve o değeri, referans olarak bu değil geçiyor, bu yüzden aslında $ _POST değerini değiştirerek çünkü ben oldukça eminim.

Ayrıca, kullandığınız mysql_real_escape_string() yerine gerekir?

DÜZENLEME: PDO kullanarak ve yukarıda yöntem ile birlikte () am hazırlanması. Bu benim için ilgilenir mi?

3 Cevap

Neden kullanmayın array_map()?

array_map(mysql_real_escape_string, $_POST);

Ama gerçekte hazırlanmış / parametrized ifadeleri kullanıyor olmalıdır.

mysql_real_escape_string() dikkate ayarlanmış geçerli veritabanı karakter alır, mysql_escape_string() yok. Bu nedenle, eski karşılaştırıldığında daha iyi bir alternatiftir.

Edit (sorusuna OP'ın düzenlemeyi takip):

Zaten PDO tablolarını hazırlamıştır yana, kendi değerlerini değiştirmek için gerek yoktur. PDO, her şeyi halleder bu onun bütün mesele (If you really put all data in parameters, that is - Sadece PDO ile veya olmadan felakete yol açar SQL ifadeleri oluşturmak için dizeleri bitiştirmek). Önceden değerleri kaçış veritabanında kaçan değerlerine yol açacaktır.

Eğer bu yolu gitmek için gidiyoruz Evet, eğer, mysql_real_escape_string() kullanıyor olmalıdır. Ancak değişkenler veritabanına göndermek için güvenli olduğundan emin olmak için doğru yolu mysqli işlevleri veya PDO ya aracılığıyla PHP verilmiştir Parameterized Queries hangi kullanıyor.

Önceki yorumlar yanı sıra, Parametrelenmiş sorguları kullanarak başka bir yararı daha iyi performans alırsınız böylece veritabanı daha iyi optimizasyon yapmak ve muhtemelen bir önbelleğe alınan sorgu planı kullanmak mümkün olacak olmasıdır.