Geçtiğimiz birkaç popüler PHP ile ilgili cevaplar ile karşılaştım. Bu, kod kokusu olduğunu düşündüğüm süper küresel $_REQUEST
'u önerdi, çünkü bana register_globals
'u hatırlattı.
$_REQUEST
niçin kötü bir uygulama olduğu hakkında iyi bir açıklama/kanıt sunabilir misiniz? Ben kazdık birkaç örnek dışarı atmak, ve hem teorik saldırı vektörleri ve gerçek dünya patlamalar hakkında daha fazla bilgi/perspektif, yanı sıra sysadmin riskini azaltmak için alabileceği makul adımları önerileri isterim. Uygulamayı yeniden yazıyor ... veya yönetimine gitmek için'a ihtiyacımız var mı ve yeniden yazma konusunda ısrar mı edelim?).
Örnek güvenlik: Standart GPC
dizi birleştirme dereceden COOKIE değerleri almak ve POST geçersiz olduğu anlamına gelir, yani $_REQUEST
XSS ve HTTP saldırı için de kullanılabilir. PHP, çerez çeşitlerinin süper küresel dizilerin üzerine yazılmasına izin verir. this talk'un ilk 10 kaydı örnek verir (bütün konuşma mükemmeldir). CSRF saldırısının phpMyAdmin exploit örneği.
Örnek önlemler: ayarlarını yeniden $_REQUEST
dizi birleştirme dereceden GPC
den CGP
kadar/POST COOKIE, değil, başka bir yol üzerine GET. Superglobals'ın üzerine yazmak için Suhosin kullanın.
(oldu benim soru dupe olduğunu düşünmüş Ayrıca, soran olmaz, ama mutlu ezici SO "When and why should $_REQUEST be used instead of $_GET/$_POST/$_COOKIE?" cevap "Asla.") URL üzerinde geçirilen şey
Ayrıca form defterini veya çerezleri de taklit edebilirsiniz. COOKIE POST hakkında özel bir şey yoktur, bu da aldatmayı daha da zorlaştırır. – Kibbee
Yine de bir şey var. GET değişkenleri bir CSRF saldırısının parçası olarak kullanılabilir. Sadece bazı şeyler için POST veya COOKIE'ye izin vermek, bu tür saldırıları daha da zorlaştırır. – troelskn