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

Sayfa Yükleniyor...
  Merhaba , kişisel weblog alanıma hoşgeldiniz...  
 
    stripslashes addslashes
  mysql_real_escape_string
10 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  
    www.aygunsoft.com       # Gökhan AYgün # @    10 Mayıs, Cumartesi 2008 10:50:30   
  Php 5 e geçtiğimizde kimse php 4 ten vazgeçememişti zaten yanı bi 4 ten bi 5 ten yazılan siteler vardı . Tabi hatalarda alınıyordu bununla birlikte. Mesela php 4 derleyen bi derleyicide php 5 derlenmeye çalışılınca hata veriyordu doğal olarak .
İnş. hayırlı olur 6 ...
Son olarak bence mysql -php-apache ve (java tomcat) olaylarına hakım olunmalı bu ilerisi için iyi olabilir kanımca .
Makale için teşekkürler.
 
     
 
    www.azizce.com       # Alihan Çetin # @    14 Mart, Cuma 2008 21:31:32   
  Teşekkür ederim Serkan. İşine yaradıysa sevindim.

İyi Çalışmalar
 
     
 
    http://www.deringeyik.com       # serkan # @    14 Mart, Cuma 2008 21:28:46   
  teşekkürler...güzel bir makale olmuş  
     
 
    www.shapcy.com       # Mustafa Şapçılı # @    11 Aralık, Salı 2007 00:06:12   
  Umarım PHP6'ya geçişimiz PHP4'ten PHP5'e geçiş gibi sıkıntılı olmaz...  
     
 
   
blank
Arama İpucu
blank
  Temel Kaynaklar
  •  Giriş
  •  Üyelik
  •  
  • Arşiv Arşiv
  • RSS 2.0 RSS
  • Smart RSS Smart RSS
blank
  Kategoriler
blank
  Tavsiye Linkler