Herkese selamlar;
Bildiğiniz üzere PHP'de SQL İnjection ile veritabanına sızma olayı ve çeşitli kayıtları değiştirebilme olanakları var kötü niyetli insanların, mysqli'de bir şekilde sızabiliyorlardı diye biliyorum.PDO'da SQL Injection olayı varmı bilginiz varmı ? Yada önereceğiniz bir method varmı bunun için?
PDO SQL İnjection önlemek için tek başına yeterlimidir?
13
●184
- 24-05-2021, 12:36:00
- 24-05-2021, 12:37:22Üyeliği durdurulduBuradaki Kaynaktan Bilgi Sağlayabilirsiniz:https://kevinsmith.io/protect-your-p...-sql-injection
- 24-05-2021, 12:38:21Selamlar, bahsettiğiniz konu tek başına yeterli değildir. Url rewrite kullanmanız gerekir , değişkenleri muhakkak temizleyerek alın , yine veri tiplerini kontrol edin yani string/int gelmesi gereken yerden gerçekten bu şekilde veri geliyor mu gibi tüm senaryoları düşünmeniz gerekir. Bu benim yazdıklarım başlıca 2-3 konudur, zamanla tecrübe ederek anlarsınız. Hacklendiğiniz zaman üzülmeyin, açığınızı tespit edip onarın, bu sizi bizim söyleyeceklerimizden daha fazla geliştirecektir.
- 24-05-2021, 12:42:45seflink işleminden bahsediyorsaniz evet o işlemi gerçekleştirdimalperenalpa adlı üyeden alıntı: mesajı görüntüle
- 24-05-2021, 12:44:32prepare ve execute ile kullanım yaparsanız injection'a karşı korunmuş olursunuz.(100% kesin değil, internette dolaşan bilgi ve kendi deneyimlerim) query ile çalıştırırsanız injection'a karşı açık olur. Yinede her ihitmale karşı mysql ile işlenicek veriler üzerinde denetim yapmak daha sağlıklı olacaktır
- 24-05-2021, 12:45:04Bildiğimiz PDO Methodlarını kullandım işte diyelimSinemium adlı üyeden alıntı: mesajı görüntüle
$veri=$db->prepare("SELECT * FROM veri WHERE veri_id=:id");
$veri->execute(array("id"=>$_POST['id']));
$veriCek=$veri->fetch(PDO::FETCH_ASSOC); - 24-05-2021, 12:45:27Query yerine sürekli prepare kulladım hocammikropiks adlı üyeden alıntı: mesajı görüntüle
- 24-05-2021, 12:53:51SQL incejection dan korunmanin en güzel yolu gelen veri isteğini direkt where gibi yapılarla aratmak yerine once veri tabanı süzülür daha sonra gelen istek string olarak rowlarda aratilir. Yani kullanicilar sizin SQL cümlelerinizin içerisine müdahale edememiş olur.
örneğin : kullanici girişi yapılacaksa yalnızca ilgili verilerin tamamı Datareader gibi nesneler kullanarak alinir ve gelen request Datareader da olup olmadığ kontrol ettirilir. Bu sekilde %100 korunursunuz. Performans için birşey diyemem.