php ile kayıtları silmek için güvenli bir şekilde

6 Cevap php

Ben bir birincil anahtar verilen bir veritabanından kayıtları silmek için aşağıdaki kod parçası var. Bu GET yoluyla, bir AJAX isteği üzerinden denir. Benim JavaScript incelemek vardı herkes URL'yi çalışmak ve keyfi kayıtları silmek olabilir. Bunu önlemek için ne yapabilirim?

GET kullanmak değil mi?

Oturumları kullan?

if($cmd=="deleterec") {
    $deleteQuery = "DELETE FROM AUCTIONS1 WHERE ARTICLE_NO = ?";
    if ($delRecord = $con->prepare($deleteQuery)) {
        $delRecord->bind_param("s", $pk);
        $delRecord->execute();
        $delRecord->close();
        echo "true";
    } else {
        echo "false";
    }
}

6 Cevap

GET kullanarak bir şey değişmez. Eğer bile kodda bu noktaya gelmeden önce 'erişim kontrolü' yönetmek için oturumları kullanmak zorunda.

AJAX isteği istekte kişi aslında bunu yapmadan önce, silme yapmak için izin olduğunu oturumu aracılığıyla teyit bu noktada gereken yapıldığında olduğunu söylemek oluyor.

Eğer bir 'non-AJAX' bir şekilde izinlerini kontrol edin ve burada aynı şeyi nasıl düşünmek.

Eğer kayıtları AJAX istekleri kullanmak için sıralı olmayan bir rasgele benzersiz kimliği verebilir.

Hala en güvenli çözüm, ancak mevcut sisteme entegre etmek kolay olmamalı.

Sorunuzun iki önemli yönü vardır.

Yetkili kullanıcı uygun gördükleri herhangi bir kaydı silmek mümkün olması gerekiyordu? Bu durumda eğer sorun isteği yetkili bir kullanıcı geldi emin biridir. Bu durumda PHP'nin oturum kullanarak bu talepte Eğer doğrulanmış kullanıcı bulunuyor emin bir yoludur. Tabii ki, tüm teknolojileri ile size PHP oturumuna doğru şekilde kullandığınızdan emin olmak gerekir. O Mather üzerine makaleler bir grup vardır. PHPsec.org has one here.

Bir kullanıcı herhangi bir satır silmek yapamıyorsanız, kimlik doğrulama ve oturumları yapmaya ek olarak ayrıca silinen kayıt o kullanıcı tarafından silinebilir eğer doğrulamak için kod bir çek vardı gerekir. Şimdi bu uygulama son derece bağlıdır. Örneğin, bir proje yönetim yazılımı, bir değil, başka biri ile bir proje ile ilişkili görevleri silmek için izin olabilir. Bu sizin iş mantığı parçası.

En iyi kontrol hem de gerçekleştirmek olacaktır. Bir, silme yapma kullanıcı geçerli bir kullanıcı ve silmek için izin veriyorsa, uygulama doğrulamalısınız (php oturumları ile uygulamak çok basit) ve iki kullanıcı sahipliği çeşit dayalı belirli bir kaydı silebilirsiniz emin olun.

Ajax ile CRUD yöntemleri maruz bırakmayın.

Herkes bir kaydı silebilirsiniz eğer Eh, yetkili kullanıcılar bu yüzden sadece siler yapabilir, bu bir şifre arkasında olduğundan emin olun. Kendinizi sonradan ve PHP tarafında sayfasında bir 'Sil' düğmesini ekler komutları işlerken kullanıcı yetkili emin bir giriş yapın.

Oh ve Evet, her zaman bile yetkili kullanıcılar ile, bu en iyi uygulama, sadece bir GET parametre doğrulamak için POST aracılığıyla onay değeri iletin emin olun.

Kullanıcı yetkili ve silmek için izin verilirse kayıtları silmeden önce kontrol etmelisiniz.