Get ile veri ekleme güvenliği
11
●272
- 13-11-2022, 21:15:33Merhabalar, engelle.php için get ile veri ekleme yapacağım. Mesela 25 id li üyeyi engellemek için engelle.php?id=25 şeklinde get oluşturacağım. Burada ne gibi açıklar olabilir ve nasıl güvenli hale getirebilirim?
- 13-11-2022, 21:46:39Form şeklinde değilde link şeklinde olacak yani mesela:aliumac adlı üyeden alıntı: mesajı görüntüle
<a href="engelle.php?id=25">Engelle</a>
Şeklinde olacak engelleye basınca direkt linke yönlendirip çalıştıracak. - 13-11-2022, 21:54:15Kesinlikle güvenlik zaafı yaratacaktırMustafa1379 adlı üyeden alıntı: mesajı görüntüle
- 13-11-2022, 21:56:02İsteğin kimden geldiğini engelle.php sayfasında kontrol etmezsen 10 yaşındaki çocuk bile curl isteği atarak tüm kullanıcılarını banlayabilir.
Önerilerim get yerine post kullan, düz id yerine uuid kullan, yapılan isteğin site içinden geldiğini kontrol et, yapılan isteğin admin tarafından yapıldığını kontrol et. - 13-11-2022, 22:02:26Engelle.php sayfasına yönlendirildiğinde oturum açık mi diye kontrol ediliyor açıksa engelleyen oturum sahibi engellenen get ile gelen id oluyor. Buna ek olarak get ile token göndersem yine güvenlik açığı olur mu?Misafir adlı üyeden alıntı: mesajı görüntüle
- 13-11-2022, 23:11:54Token guvenli bir sekilde olusturulduysa, taklit edilemiyorsa en onemli guvenlik acigi kapanmis olur. Ama eger guvenlige cok onem veriyorsan diger dediklerimi yapmanda da fayda var.Mustafa1379 adlı üyeden alıntı: mesajı görüntüleMustafa1379 bunu beğendi.1 kişi bunu beğendi.
- 13-11-2022, 23:18:31Teşekkürler, normalde post kullanacaktım ama post etmek için buton gerekiyor ve butonda tasarımda kötü gözüküyor bu yüzden link olması gerekiyor linke token da ekleyeceğim ve zaten oturum açık mi diye de kontrol edeceğim.Misafir adlı üyeden alıntı: mesajı görüntüle
- 14-11-2022, 20:47:03yorumları okuyunca dondum kaldım. cahillik tamamda yarı cahillik başa bela.
intval kontrolu ile hiçbir güvenlik açığı olmaz.
engelle.php?id=25 olarak varsayıyorum
if(isset($_GET['id']) && intval($_GET['id'])>0){ //bu kontrolden sonra intval($_GET['id']) olarak gonul rahatlığıyla kullanabilirsiniz. // örnek vermek gerekirse : $db değişkenini mysql bağlantınız olarak varsayıyorum. $db->where( 'id', intval($_GET['id']) )->update('tablo', [ 'deger' => 'r10', 'durum' => 1 ]); }bu kontrolleri daha kolay yapabilmeniz için
https://github.com/Wixel/GUMP kullanmanızı tavsiye ederim.
kolaylıklar.