Güvenli başlıklarında $ _GET koyuyor?

8 Cevap php

Benim profile.php komut, ben kullanıcıların bayrak kullanıcı sağlayan bir bayrak işlevi var.

Onlar bir kullanıcı bayrak varsa, flag.php ki tüm yasaklama ve malzeme yapar adlı bir dosyaya (user_id, reason, vb) veri gönderir. Veriler, flag.php üzerinden gönderilir

header("Location: flag.php?user_id=___&reason=___")

Sonra flag.php, bu yaptığı tüm sonra başka bir başlığı sayesinde geri profiline kullanıcıyı yönlendirir, yasaklanması. Kullanıcı flag.php hiç görmez.

Benim flag.php güvenli mi? onlar senaryoyu görmek asla çünkü?

EDIT Sen GETler için güvenli kabul asla ... Bir banuser işlevi yapmak veya oturumları aracılığıyla göndermek ya gidiyorum.

8 Cevap

Hayır. URL tarayıcı geçmişine kaydedilecek olacak ve sadece yasaklı kullanıcı onlar çünkü User_id parametrenin yasaklamak istediğiniz herhangi bir kullanıcıyı yasaklamak mümkün olacak. Ben bunun yerine bir fonksiyon ban_user($user_id,$reason) oluşturmanızı öneririz.

304-yönlendirme istemci üzerinden gitmek zorunda, bu yüzden kullanıcı HTTP iletileri izlemek ve kontrol etmek için nasıl öğrenebilirler flag.php.

Nasıl yeni bir sayfa yaşamak gerekiyorsa, $_SESSION kullanmaya ne dersiniz?

Güvenli değil. Bir (bir araç ile başlıkları / isteklerini kontrol ederek kolaydır) yerini biliyorsa, biri sadece istediğiniz kullanıcı yasaklandı almak için URL flag.php?user_id=1&reason=bye girebilirsiniz. Biri bile 100000 kullanıcı id 1 bir döngü içinde bunu yapan bir komut dosyası yazabilirsiniz.

Eğer ana PHP komut dosyası, bir HTTP isteği ile dahil bağımsız bir komut bunu yapmak gerekir. Kullanıcı doğrulama yanı sıra sağlam olduğundan emin olun.

(Komut göremiyorum gibi) Belirsiz güvenlik yapmak için kötü bir şeydir. Popüler bir sayfa varsa, insanlar sistemi etrafında yollar aramaya OLACAK, ve akıllı olanları girişi ile karıştırmasını çalışacağız!

Ne "& User_id = [root_id]! HACK GİRİŞİMİNDE" koyarak bazı URL-değişkenleri yeniden karar verirseniz

PHP sadece bulduğu ilk "user_id" sürebilir, ama bu nereye gittiğini görebilirsiniz.

Sizin kod olmadığını görmek için kontrol etmelisiniz:

  1. Safhada ortadan yaparken Kullanıcı oturum
  2. Safhada ortadan yapıyor kullanıcı doğrudan flag.php sayfayı ziyaret etti
  3. Safhada ortadan yapıyor kullanıcı son birkaç dakika içinde nn insanlar bayraklı etti

Sadece geri nerede olduklarını, onları yönlendirmek, sonra bir yönlendirme kullanmadan, flag.php verileri POST olamaz neden bir nedeni var mı (eğer gerçekten, onlar bir yerde ve sadece flag.php kötüye değil)?

Ben de size garip davranışları tespit ise, süreç içinde bir captcha koyarak öneririz.

Her neyse, hayır, onun güvenli değil. Onun sadece istismar için soruyorum.

Bu tamamen güvensiz; Her kullanıcı kendi iradesine karşı herhangi bir başka kullanıcı yasaklama yapılabilir. CSRF saldırıları ve savunma içine bak. Ve bu tamamen anlamsız olduğunu, yönlendirme şeyi bırakın. Ben onunla ulaşmak istediğini bile emin değilim. Kullanıcı işaretleme bağlantı noktaları, yerine doğrudan bir isteği dövme, kapalı daha iyi olursanız için bir istek gönderir? Eğer Öyle düşünmüyorum.

Hayır Betiğiniz diğer yanıtlar belirtilen nedenlerden dolayı güvenli değildir.

Bir çözüm olsa da - ve ben certain durumlarda kullanın Aynı zamanda bir parametre olarak benzersiz bir kimlik gerektiren etmektir. Örneğin:

flag.php?user_id=_______&reason=______&special_id=36a678dabc6d78a6db

The special_id sadece kimliği ile kullanıcı yasaklanması için geçerli olacak user_id.

Bu kimlik sadece bir kullanım için geçerli olacak - ve sadece belirtilen kimliği için geçerli olacaktır.

Eminim kişi açmış bir yönetici olduğunu ortaya koyuyor başında bir işlev koymak, ve eğer, bu komut dosyası yapmak istiyorsanız. Kişi oturum açan bir yönetici değilse Ama ana sayfasına yönlendirme olur.

Bu GETler kullanımı güvenli yapmak olurdu?