• 12-01-2016, 22:43:51
    #1
    Üyeliği durduruldu
    Merhabalar,
    Öncelikle mysqlden bir veri sileceğimiz zaman
    <a href='sil.php?id=$silinecekid'>SiL</a>
    şeklinde siliyoruz.

    Karşılığınıda,

    <?php 
    $sil_id=$_GET['id']; 
    $tamam = mysql_query("DELETE FROM tabloadi WHERE id='$sil_id'"); 
    echo mysql_error(); 
    if($tamam){ 
    echo "Kayıt Silindi"; 
    }else{ 
    echo "Kayıt Silinemedi"; 
    } 
    ?>
    Ama bu durumda şöyle bir sorun var.
    dışardan http://sayfaadı/sil.php?id=1 satırı yazıldığında bizim 1. kayıt uçacak.
    1. İlk olarak dışardan müdehaleyi ne tarz bir yolla engelleriz?
    2. İkinci olarak gelen değerin int mi stringmi oldugunu nasıl kontrol ederiz sql inject e engel olmak amaçlı?

    Şimdiden Teşekkürler...
  • 13-01-2016, 00:47:54
    #2
    @PlusMesaj; 1. session kontrolü yapabilirsiniz. Belli bir kullanıcı adı şifre ile giriş yapanlar için session oluşturursunuz, sonrasında silme gibi işlemlerinizi yaptığınız php dosyasında bu sessiona sahip olmayanlar için silme işlemi yaptırmazsınız.

    2. standart mysql_connect fonksiyonları ile veritabanı bağlantısı sorgusu yapıyorsanız mysql_real_escape_string fonksiyonu ile get ve posttan gelen değerleri süzmeniz sql injection açısından faydalı olacaktır.
  • 13-01-2016, 07:42:17
    #3
    Üyeliği durduruldu
    -Başkalarının silmemesi için session kullanın.
    -Inj. için ise pdo kullanın ve gelen veriyi şu fonksiyon ile süzün:
    function get($a, $b = false){
            if($b){
                return htmlspecialchars(addslashes(trim($_GET[$a])));
            }else{
                return addslashes(trim($_GET[$a]));
            }
        }
  • 13-01-2016, 14:15:26
    #4
    $sil_id = (int)$_GET['id'] şeklinde integer olarak alabilirsiniz.
    İnt veri tipinde olmayan istekler 0 olarak dönecektir.
  • 16-01-2016, 03:04:07
    #5
    sql injection'dan korunmak istiyorsanız daha güncel olan PDO'yu kullanmanızı kesinlikle tavsiye ederim. bir de diğer arkadaşların belirttiği gibi session'ı kesinlikle kullanmalısın ve $_GET ile aldığın değeri yaptığın tüm projelerde de filtrelemeyi unutma.
  • 17-01-2016, 21:32:38
    #6
    Üyeliği durduruldu
    Tüm cevaplar için teşekkür ederim, Session olayını ekledim ve integer oalrak alıyorum degeri ayrıca mysql_real_escape_string olarak ta süzdüm. Şuan birtek PDO ya geçmek kaldı onuda proje tamamlandıktan sonra kısmetse
    Ayrı Ayrı teşekkür ediyorum ilgilenen arkadaşlara.