Çeşitli yanıtlar zaten belirtildiği gibi: Any data coming from the client cannot be trusted and must be treated as being malicious by default. Bu $_POST
, $_GET
, $_COOKIE
ve $_REQUEST
(eski kombinasyonunu), fakat diğerleri de içerir.
Diğerlerinden daha onları daha tehlikeli olma bazıları hakkında konuşurken I [(3)] üzerinden {dan (o $_GET
içerir gibi) gerçekten $_GET
, ayrı ve $_REQUEST
olur } olarak it is slightly harder to generate, i.e. manipulate, a POST request than a GET request. Burada vurgu slightly, ancak hassas operasyonlar için POST kullanarak en az yararlanma düşük asılı meyve başka bir katman kaldırır.
O Cross Site Scripting (ya da XSS) ve çerez hırsızlığı söz konusu olduğunda, sadece bir manipüle URL ile gizli bir görüntü ekleyerek saldırı altında sunucuya bir GET isteği için bir kurbanın tarayıcısını almak oldukça kolaydır Bir sayfa veya bir bağlantı dövme.
Bir POST isteği vermeden en az (duruma göre) yürütülmesi için kurbanın tarayıcısında enjekte etmek slightly zordur bazı JavaScript gerektirir. Açıkçası POST istekleri doğrudan saldırganlar tarafından oluşturulan olabilir, bu nedenle onlar da güvenilir olamaz, ama bir saldırganın 3. parti tarayıcısı geçiyor senaryolar için, onlar işlemek için biraz zordur.
Dikkate vb uygulama kısıtlamaları alarak - Güvenlik uygulama kırmak için mümkün olduğunca sert yapma konusunda her zaman. Bu% 100 güvenli olma konusunda olamaz. Farklı uygulama yaklaşımları arasında seçim olan zaman böylece, choose the alternative which is more difficult to exploit, even if the difference is marginal için iyi bir uygulamadır.
Sonunda düşük asılı meyve kaldırma konusunda her zaman. Tabii, POST istekleri de manipüle edilebilir, ancak yüksek bir riski vardır herhangi bir işlem için, bir POST isteği kullanmak ve kod $_POST
kullanarak kendinizi kısıtlamak. Zaten bazı çok kolay GET drive-by saldırıları hariç ve edenlere bu şekilde şimdi POST verilerini doğrularken odaklanabilirsiniz. Sadece POST kullanarak aniden varsayılan işlemi güvenli yapılmış olduğunu düşünmeyin.