URI'lar Gizli Formlar vs

4 Cevap php

Ben CodeIgniter'daki çalışıyorum, ve ben dahil birçok parametre var benim denetleyicisi / modeline istekleri göndermek istiyorum. URI'lar geçirerek aksine (örn. '$ günlük seyahat $ / ay / /') (yani $_POST kullanarak) gizli bir formu aracılığıyla bu parametreleri geçirerek arasında bir fark var mı? Bu yaklaşım ile herhangi bir güvenlik kaygıları var mı?

Example Security Concern:

  • URI'lar

    http://www.example.com/travel/$month/$day/

  • Gizli Form:

    form_hidden('month',$month);
    form_hidden('day',$day);

4 Cevap

Temel kural - istekler şeylerin durumunu değiştirmek asla GET. Yani, aslında bir şey veya istek değiştirirseniz - Nonce değerleri (yanlışlıkla Resubmissions önlemek ve CSRF attacks için) ile gizli formları kullanın. Aksi takdirde, hiçbir fark yok.

Auth URI'lar ve POST veri ayrıştırılması gerekir - kurabiye, HTTP auth ve SSL istemci sertifikaları vardır. Herkes 11 Haziran 2009 yılında orada olduğunu bilir, ve bir sürü insan sitenizde /$year/$month/$day/ şeması URI'lerde (veya "y", "ay" ve "gün" POST alanları) kullanabilirsiniz biliyor olabilir . Ama sadece erişim hakkı olanlar (bu URI veya POST veri) Bu sayfada ne görmek gerekir. Tabii ki geçerliliğini denetlemek zorunda ve, evet, hem de GET ve POST verileri kolayca tahrif edilebilir.

If you choose URIs, if the user bookmarks the URLs,
it brings security problem.

and if any user clicks any links ,
then the target web server can now know
HTTP_REFFER, and the server administrator
can know the link.

o URI'yi görmek anlamına gelir.

so my personal opinion is that
you better choose hidden form.

Eğer, gelen-verilerini izlemek eğer çok bir fark yapmak için gitmiyor gerektiğinde (kullanıcılar, kötü goblinler hatırlıyorum) ve temiz. Fark sadece aşağı kullanılabilirlik konusunda: Kullanıcıların her zaman URL yöntemini kullanın, sonra bir form üzerinden gitmek zorunda kalmadan aynı sonuçları erişebilir olmasını istiyorsanız.

Tüm dürüstlük, sizin örnek sizin için uygun olacağını hangi yöntemi (POST / GET) belirlemek için yeterli veri verilmiş değil.

Önerilen Okuma: GET versus POST in terms of security?

Geçenlerde bu aynı sorunu içine koştu. Ek bir şey URL maruz kaldığında, web sitesi yöntemler / verilerin ortaya riski çalıştırın. Araştırma biraz sonra, ben sayfa sadece basit bir görünüm olsaydı kesinlikle veya gerektiği zaman sadece değişkenleri göstermek için seçildi. Eğer URL fazla veri maruz, daha çek muhtemelen (hangi kullanıcı x şekilde URL değiştirir ise) yerine koymak gerekir.

Başka bir göz işareti veya URL'ler (muhtemelen Görüntülendi) link yeteneğidir. Bir fikir, bir şifreli dizesi yoluyla URL değişkenleri gizlemektir. Daha sonra veritabanında şifreli dize depolamak ve gerektiğinde serialize olabilir. Ben bir arama motoru için bu yaptım ve bana her iki dünyanın en iyi verdi. Bu CodeIgniter ile oldu.