Ana Sayfa   Weblog   Realtime   Galeri   Arşiv   İletişim-Referanslar

Sayfa Yükleniyor...
blank
  Merhaba , kişisel weblog alanıma hoşgeldiniz...  
    stripslashes addslashes mysql_real_escape_string10 Aralık, Pazartesi 2007  

 
 

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:

if(get_magic_quotes_gpc()) {
            $veri        = stripslashes($_POST['gelen_veri']);
        } else {
            $veri        = $_POST['gelen_veri'];
        }

Bunlardan bihaber olan vatandaş, mysql_real_escape_string SQL Injection 'ları engelliyormuş şeklinde duyum alınca şöyle bir yanılgıya düştü:

$veri = $_POST['gelen_veri']; // İstanbul\'un

$guvenli_veri = addslashes(mysql_real_escape_string($veri)); // İstanbul\\\\\\\'un


Bu çok bariz oldu, fazlalık göze çarpmayacak gibi değildi, o zaman şöyle yapalım dediler:

$veri = $_POST['gelen_veri']; // İstanbul'un
$filtre_veri = stripslashes($veri)

$guvenli_veri = addslashes(mysql_real_escape_string($filtre_veri)); // İstanbul\\\'un

Yine olmadı Smile
Halbuki PHP Manual 'de cevap yıllar önce hazırdı:

//....

if(get_magic_quotes_gpc()) {
            $veri        = stripslashes($_POST['gelen_veri']);
        } else {
            $veri        = $_POST['gelen_veri'];
        }

$guvenli_veri = mysql_real_escape_string($veri);

//....

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: 

//....

$veristripslashes($_POST['gelen_veri']);

$guvenli_veri = mysql_real_escape_string($veri);

//....
 
     
  EkleBunu Sosyal Paylaşım Butonu
 
 



* Opsiyonel : Web Adresiniz
Güvenlik Sorusu:    7 ile 3 sayısının toplamı kaçtır?
 
 
blank
#Sayfa Başı
Arama İpucu
blank
  Temel Kaynaklar
  •  Giriş
  •  Üyelik
  •  
  • Arşiv Arşiv
  • RSS 2.0 RSS
  • Smart RSS Smart RSS
blank
  Kategoriler
blank
  Tavsiye Linkler