mysql_real_escape_string / Güvenlik
Mysql gayet vefalı bir dost gibi depoladığımız her şeyi sır gibi saklar ta ki biz çağırana kadar.Bu vefalı dosta karşı bizde iyi davranmalıyız ki karman çorman veri yıgınları oluşturmayalım ve ilerde büyük sorunlar yaşamayalım veya bu yolladığımız veriler başkalarının eline geçmesin.
Ne saçmalıyor bu şeklinde düşünüyor olabilirsiniz ama ilk öğrenmemiz gerekenlerden biri mysql tablolarımızı gereksinimlerimiz doğrultusunda kullanım amacımıza yönelik oluşturup yolladığımız verilere de dikkat etmektir kendi kanaatimce.
Verilerin başkalarının eline geçmemesi noktasında mysql_real_escape_string e ihtiyacimiz var.Veri hırsızları ve kendine hacker diyen kişiler unutmayınki bilgilerinizin ve sitelerinizin peşinde çağımız bilgi çağı en büyük değer bilgi olmuş durumda.
Peki nasıl faydalanacağız bilgilerimizin başkalarının eline geçmemesi için mysql_real_escape_string fonksiyonundan ne işe yarar bu fonksiyon.
sql_injection : mysql veritabanınıza sitenizdeki kullanıcıdan ve dışardan aldığınız verileri yeterince süzmeden kayıt gerçekleştiriyorsanız muhtemelen başınıza gelecek şey.Sql injectiona veritabanınıza sitenizdeki formlar aracılığı ile get veya post metodları ile aldığınız bilgileri kayıt ederken süzmemeniz sebep olur.bu metod ile işini bilen bir hacker sizin sitenizi komple eline geçirebilir.
Nasıl Korunurum sql injection dan ?
Sitenizde dışardan herhangi şekilde veri alıyorsanız bu verileri önce tehlike arz edebilcek bilgilerden istenmeyen bilgilerden arındırmak için önceden hazırladığınız süzgeç fonksiyonundan geçirebilirsiniz ki birçok programcı bu metodu kullanır.Bu süzgeç sistemi içersinde mysql komutlarını da süzülecek elemanlar olarak ayarlamışsanız endişe edilecek bir durum kalmamıştır.Şayet süzgeç fonksiyonunuz yeterli değilse bu konuda mysql_real_escape_string yardımımıza koşuyor ve veriyi mysql komutlarından temizliyor.
mysql_real_escape_string Fonksiyonunun Kullanımı
Kullanacağınız satır öncesinde mysql bağlantısını yaptıysanız
$temizveri=mysql_real_escape_string($veri); // bir değişkene atadığınız veriyi temizleme
$temizveri=mysql_real_escape_string($_POST[veri]); //post metodu ile alınan veri temizleme
$temizveri=mysql_real_escape_string($_GET[veri]); // get metodu ile alınan veri temizleme
mysql sorgusu sırasında da kullanılabilir.
mysql_query("SELECT * FROM kullanici_tablo WHERE kullanici ='".mysql_real_escape_string($kullanici)."' and sifre='".mysql_real_escape_string($sifre)."');