PHP İle Basit SQL İnjection Önlemleri
Merhaba Arkadaşlar uzun zamandır konu açmıyordum bir konu açayım dedim ve yardımcı olmak amacoyla bu konuyu açmaya karar verdim. Umarım bu konum size yardımcı olur.
POST ve GET methodlarıyla veri çekerken nasıl çekiyorsunuz ?
Örneğin:
index.html
goform.php (GÜVENSİZ OLAN)
Örneğin yukarıda writeden alınan veriyi name değişkenine atadım.
İşte tüm sorun burada kod çalışır mı ? ÇALIŞIR. Fakat hiç güvenli değildir.
Bu Gibi sorgular MySQL Veri tabanında hatalara yol açar veya bir hacker login formundan veri tabanına sızar.
Çünki '," gibi karakterler filitreye alınmadığında sql injection dediğimiz açık meydana geliyor.
goform.php (GVENLİ OLAN)
Yukarıda gördüğünüz sorguda ise gelen veriyi filitreledim. nasıl mı ?
write kutusundan gelen '," gelen karakterler mysql_real_escape_String() fonksyonundan ve htmlspecialchars() fonksyonundan geçiyor. direk veri tabanına yazılmıyor. Bu da sitemizi biraz daha güvenli kılıyor. Tabi ki yeterli değilid! Daha güvenli php fonksyonlarını bir arada kullanabilirsiniz. Google size yardımcı olacaktır. Konularımın kalitesini ve bilgimi artırmak istiyorum arkadaşlar yorumlarınızı bekliyorum...
Merhaba Arkadaşlar uzun zamandır konu açmıyordum bir konu açayım dedim ve yardımcı olmak amacoyla bu konuyu açmaya karar verdim. Umarım bu konum size yardımcı olur.
POST ve GET methodlarıyla veri çekerken nasıl çekiyorsunuz ?
Örneğin:
index.html
Kod:
<form action="goform.php" method="POST">
Name:<input type="text" name="write">
<input type="submit" value="Gönder">
</forum>
goform.php (GÜVENSİZ OLAN)
Kod:
<?php
$name = $_POST['write'];
echo $name;
?>
Örneğin yukarıda writeden alınan veriyi name değişkenine atadım.
İşte tüm sorun burada kod çalışır mı ? ÇALIŞIR. Fakat hiç güvenli değildir.
Bu Gibi sorgular MySQL Veri tabanında hatalara yol açar veya bir hacker login formundan veri tabanına sızar.
Çünki '," gibi karakterler filitreye alınmadığında sql injection dediğimiz açık meydana geliyor.
goform.php (GVENLİ OLAN)
Kod:
<?php
$name = mysql_real_escape_string(htmlspecialchars($_POST['write']));
echo $name;
?>
Yukarıda gördüğünüz sorguda ise gelen veriyi filitreledim. nasıl mı ?
write kutusundan gelen '," gelen karakterler mysql_real_escape_String() fonksyonundan ve htmlspecialchars() fonksyonundan geçiyor. direk veri tabanına yazılmıyor. Bu da sitemizi biraz daha güvenli kılıyor. Tabi ki yeterli değilid! Daha güvenli php fonksyonlarını bir arada kullanabilirsiniz. Google size yardımcı olacaktır. Konularımın kalitesini ve bilgimi artırmak istiyorum arkadaşlar yorumlarınızı bekliyorum...
Son düzenleme: