Öncelikle Bu Alanda Profesyonel olma yolunda ilerlemekteyim %100 Güvenli diyebileceğimiz bir kod yoktur Forumda Malesef Yıl 2021 Olmasına Rağmen Projelerinde MYSQL kullanan Arkadaşlar Mevcut hem onların bilgilenmesi Açısından hemde kendini bu alanda geliştirmek isteyen arkadaşların ilerlemesi adına böyle bir konu açmaya karar verdim


1-Veritabanı Function Seçimi



Php 5.6 Ya kadar En Çok Kullanılan Function Olan mysqli php 7 nin çıkması ile yerini pdo ya bırakmıştır PDO mysql ye göre hem daha güvenli hemde daha performanslıdır
Bu Nedenle anlatımıma pdo ile devam edeceğim
Örnek Bir MYSQL Bağlantısı
$baglanti = mysql_connect("localhost","root","123456") or die ();
mysql_select_db("test", $baglanti) or die ( mysql_error() );
Örnek Bir PDO Bağlantısı
try {
     $db = new PDO("mysql:host=localhost;dbname=test", "root", "123456");
} catch ( PDOException $e ){
     print $e->getMessage();//Hata Olursa Çıktı Olarak Ekrana Yazdırır
}
PDO İle Güvenli Veri Listeleme





PDO ile Güvenli Veri Ekleme





PDO ile Güvenli Veri Güncelleme



PDO ile Güvenli Veri Silme



2- Kullanıcıdan Gelen Verileri Filtreleme
Gelen İsteklerdeki SQL Kodlarını Silerek Ve Filtreleme Yaparak Güvenlik Anlamında biraz daha geliştirme sağlayabilirsiniz Aşağıda Yazdığım ufak functiona bakalım İçerisine Girdiğimiz Veri Bu Şekilde



Kullandığımız Kodda sql functionlarını filtrelediğimiz ve html kodlarınıda izin vermediğimiz için Çıktı Bu Şekilde Olacaktır





3-Yapılan Hatalar
Bir çok Arkadaşımızın Yaptığı en büyük hata Kullanıcıdan gelen veriyi doğrudan sql koduna dahil etmek alttaki örnekteki gibi bu şekilde işlem sağlayınca Dışarıdan müdahaleye bir kapı açmış oluyoruz


Google Chrome bu gibi açıkları Engellemek için filtreleme yapsada url de her tarayıcıda bulunmamakta bu filtreleme ' bunun %27 ye dönüştüğünü deneyerek te görebilirsiniz




Bu gibi kodlarda Dışarıdan Müdahale Edilerek Veritabanınızı silebilir günceleyebilir listeleyebilirler


4-Tavsiyeler
Ne Kadar Bu Yöntemler İşe Yarada Olsa Bu işte Profesyonel olmak istiyor bu yolda ilerlemek istiyorsanız MVC Öğrenmeniz Şarttır Codeigniter ,Laravel, ALTO Bunlara Örnektir Ayrıca Codeigniter gibi MVC lerin Kendine özel Veritabanı functionları vardır bu functionları kullanarak hem daha düzenli kod yapısına hemde daha güvenli bir kod yapısına sahip olabilirsiniz


Kaynak Kodu
indir

http://trxyazilim.com/r10/guvenlisql1.zip