Superglobals magic_quotes_gpc = 1 etkilenir hangisi?

2 Cevap php

Bu yönergenin adına bakarak bir magic_quotes sadece $_GET, $_POST ve $_COOKIE superglobals uygulanan ama orada olduğunu olduğunu düşünebilir one perturbing comment on the PHP Manual,

Please note, that when magic_quotes_gpc is set not only $_POST, $_GET, $_REQUEST, $_COOKIE arrays values are slashed. Actually every string value in $GLOBALS array is slashed, ie. $GLOBALS['_SERVER']['PATH_INFO'] (or $_SERVER['PATH_INFO']).

Herkes bunun doğru olduğunu teyit edebilir? Superglobals $GLOBALS, $_SERVER, $_FILES, $_SESSION ve $_ENV de etkilenir?

Bir soru daha, ben stripslashes() $_GET, $_POST üzerinde ve $_COOKIE diziler ben de {[yineleme aracılığıyla gerekiyor yinelemek varsa (4)]} dizi? Veya değişiklikler otomatik yansıtılır?

2 Cevap

I LightTPD 1.4.20 bazı testler ve PHP 5.3.0 magic_quotes_gpc = On ve $_SERVER değişmiş değildi birlikte oldum (en az {[(4) ]}) vermedi. $_SESSION da magic_quotes etkilenmez.

$_GET, $_POST, $_COOKIE ve $_REQUEST etkilendi (ve $GLOBALS meslektaşları).

Ayrıca, changes in the GPC superglobals otomatik olarak $_REQUEST yansıtılmaz.

$_FILES ve $_ENV superglobals gelince ben ATM bunları test etmek mümkün değilim.


Sonunda bu testi koştu ve, benim için sürpriz, hem $_FILES ve php://input are etkiledi ettik.

Her iki şekilde de bunu yeni PHP sürümleri onaylanmaz gibi GPC güvenmek değil tavsiye ediyorum ...

Bu soru için çok uygun olmayabilir ama SQL güvenlik alternatifler gündeme konusunda ben genelde MySQL için mysql_real_escape_string hazırlanmış deyimleri + kullanın.

Onu yakın bunu mükemmel yapmak için aynı zamanda tamsayı, boolean ve boş değerleri desteklemesi gerektiği gibi fonksiyonların bir çift içerir ama NaturePhp üzerine Veritabanı ve Database_mysql sınıflar üzerinde kaynak koduna göz atabilirsiniz.