SQL INJECTION Açığını Kapatma/Fixleme

 

Merhaba arkadaşlar,

Sizlere” https://okankurtulus.com.tr/2017/12/12/sql-injection-acigi-nedir” linkteki makalemde SQL INJECTION saldırısından bahsetmiştim. SQL INJECTION ciddiye alınması gereken bir açıktır. Bu yazımda ise sizlere bu açığı nasıl kapatabileceğinizi (fix) anlatacağım.

 

Her şeyden önce PDO (internetten araştırabilirsiniz) kullanarak bu açığı yüksek bir şekilde kapatmış olabilirsiniz.(Tamamen kapatabilirsiniz demiyorum)

GET yada POST ile yollnan verileri doğrulamakla başlayabiliriz. Yazmış olduğum makalemde de belirttiğim gibi Meta-karakterlerin girilmesini engelleyebiliriz. Aşağıdaki PHP kodu girdiyi Regular Expressions ile doğruluyor.

 

$input = “Girilecek deger”;
if (preg_match(“/[\-]{2,}|[;]|[‘]|[\\\*]/”, $input))
echo “zararli karakterler var”;
else
echo “Zararli karakter bulunamadi”;

 

Değer integer (tam sayı) mı değil mi aşağıdaki fonksiyon ile bunun kontrolünü de yapabiliriz.

Is_numeric();

 

Stored Procedures kullanarak Premare yaparsak ta bu açıktan korunmuş oluruz.

 

Kullanıcı yetkilerini kısıtlayarak ta korunabilirsiniz.Eğer INSERT,UPDATE gibi DML(Data Manipulation Language , Veri Değiştirme Dili) kullanılmıyorsa kullanıcıyı sadece SELECT ile kısıtlayabilirsiniz.

 

Leave a Reply

Your email address will not be published. Required fields are marked *