02-08-2016 Saat: 17:06
Php de büyük bir sorun olan SQL İnjection açığından korunmanın yolunu anlatacağım bunun birçok yolu var ancak aralarından en güvenlisini anlatacağım
Başta SQL İnjection açığının tehlikesi nedir bu açık ile neler yapılabilir bunu anlatayım SQL Açığında gelen sorgu verisinin filtrelenmediği taktirde, oluşan kod açığında kullanılan SQL kodlarını yazarak web sitenizin tablo ve kolanlarınızdaki bilgilere ulaşılabiliyor.
$id=$_GET[“id”]; / “ id “ ile veri çekilir .
$sorgu = mysql_query(“SELECT * FROM user where ID=’$id’”); / Direk Sorguya Yansıtılır.
Burada ;
Gelen id verisini 1 ise örneğin id=1’a yaptığımızda
$sorgu =mysql_query(“SELECT * FROM user where ID=’1’a’”); Olacaktır ve sorguda hata oluşacaktır buda sorguda istediğimiz sorguyu çalıştırabileceğimiz anlamına gelebilir id=1 order by 100 gibi.
Bu tür sorgular oldukça tehlikelidir, kişisel bilgilerinizi, şifrelerinizi vs. gibi şeyleri çekebilir
Şimdi gelelim bu kadar tehlikeli büyük bir açığın nasıl çok kolay bir şekilde kapatacağımıza ;
Bir önce filtresiz sorgumuzda $id verisini hiçbir şekilde filtrelemeden geçirmeden sorguda kullanmıştık. Şimdi ise “mysql_real_escape_string” fonksiyonu ile engelleyeceğiz.
$id=$_GET[“id”] / id İle veri çekilir.
$id = mysql_real_escape_string($id); / id “mysql_real_escape_string” ile filtrelemeden geçirilir burada id değişkeninin son hali kullanılır. Sorguda ise ‘,’a gibi hata alma karakterlerimiz işlemeyeceği için sorguda hiçbir şekilde kod çalıştırılmayacaktır.
Sorguda kod çalıştırılmayınca sistemden olağanüstü veri çekilemeyecektir.
Kaynak :
Başta SQL İnjection açığının tehlikesi nedir bu açık ile neler yapılabilir bunu anlatayım SQL Açığında gelen sorgu verisinin filtrelenmediği taktirde, oluşan kod açığında kullanılan SQL kodlarını yazarak web sitenizin tablo ve kolanlarınızdaki bilgilere ulaşılabiliyor.
$id=$_GET[“id”]; / “ id “ ile veri çekilir .
$sorgu = mysql_query(“SELECT * FROM user where ID=’$id’”); / Direk Sorguya Yansıtılır.
Burada ;
Gelen id verisini 1 ise örneğin id=1’a yaptığımızda
$sorgu =mysql_query(“SELECT * FROM user where ID=’1’a’”); Olacaktır ve sorguda hata oluşacaktır buda sorguda istediğimiz sorguyu çalıştırabileceğimiz anlamına gelebilir id=1 order by 100 gibi.
Bu tür sorgular oldukça tehlikelidir, kişisel bilgilerinizi, şifrelerinizi vs. gibi şeyleri çekebilir
Şimdi gelelim bu kadar tehlikeli büyük bir açığın nasıl çok kolay bir şekilde kapatacağımıza ;
Bir önce filtresiz sorgumuzda $id verisini hiçbir şekilde filtrelemeden geçirmeden sorguda kullanmıştık. Şimdi ise “mysql_real_escape_string” fonksiyonu ile engelleyeceğiz.
$id=$_GET[“id”] / id İle veri çekilir.
$id = mysql_real_escape_string($id); / id “mysql_real_escape_string” ile filtrelemeden geçirilir burada id değişkeninin son hali kullanılır. Sorguda ise ‘,’a gibi hata alma karakterlerimiz işlemeyeceği için sorguda hiçbir şekilde kod çalıştırılmayacaktır.
Sorguda kod çalıştırılmayınca sistemden olağanüstü veri çekilemeyecektir.
Kaynak :
Kod:
http://www.turkhackteam.org/web-server-guvenligi/746873-php-de-sql-injection-acigini-kapatmak.html
Olduğum Yetkiler :
Bölüm Şefi Adayı ► Bölüm Şefi 1.Seviye ► Bölüm Şefi 2.Seviye ► Emektar Üye ► Bölüm Şefi 1.Seviye ► Emektar Üye
Bölüm Şefi Adayı ► Bölüm Şefi 1.Seviye ► Bölüm Şefi 2.Seviye ► Emektar Üye ► Bölüm Şefi 1.Seviye ► Emektar Üye