PHP en güvenli web tabanlı script dili olma özelliğini kazanırken kullanıcıların kafasını karıştıran, otomatik etkisizleşme karakteri \ 'nin başrolü oynadığı söylenebilir.
Adres satırı, form girişleri, cookie (kurabiyeler) gibi script içine dışarıdan gelen verilerde bulunan ' karakterini veritabanında problem çıkartmaması ve muhtemel atakları önlemek için otomatik olarak \' ile değiştiren magic_quotes_gpc özelliği hala aklı PHP4 te kalmış kullanıcıların bocalamasına neden oldu.
php.ini de bulunan bu değer "magic_quotes_gpc" varsayılan olarak on konumuna getirildikten sonra gelen verilerdeki tehlikeli karakterler otomatik olarak etkisizleştirildi. Örneğin:
$veri = $_POST['gelen_veri']; // İstanbul'un
İstanbul'un verisi otomatik olarak
$veri = $_POST['gelen_veri']; // İstanbul\'un
oldu. Dolayısıyla şu şekilde önlem alınan veriler
$veri = addslashes( $_POST['gelen_veri']); // İstanbul\\\'un
İstanbul\\\'un halini almaya başladı.
Bunun için PHP geliştiriciler PHP kullanım klavuzu PHP manual 'de şu şekilde bir çözüm sundular:
Bunlardan bihaber olan vatandaş, mysql_real_escape_string SQL Injection 'ları engelliyormuş şeklinde duyum alınca şöyle bir yanılgıya düştü:
Bu çok bariz oldu, fazlalık göze çarpmayacak gibi değildi, o zaman şöyle yapalım dediler:
Yine olmadı 
Halbuki PHP Manual 'de cevap yıllar önce hazırdı:
PHP 6 'ya hazırlandığımız şu günlerde get_magic_quotes_gpc() php.ini ayar komutunun kırmızı arkaplan ile şu şekilde duyurulduğunu belirtmek isterim:
This feature is DEPRECATED and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
Yani siz hazırlığınızı şimdiden yapın:
|