Oturumları istemci / kullanıcı tarafından değiştirilebilir mi?

3 Cevap php

Benim PHP Web App Ben kullanıcının verilerini depolamak için oturumları kullanın. Bir kullanıcı oturum açtığında xmaple için, ardından Kullanıcı sınıfının bir örneği oluşturulur ve bir Oturum saklanan.

Ben onların ayrıcalıklarını belirlemek için her bir kullanıcı ile ilgili erişim seviyeleri var.

Tarafından bir oturumda kullanıcı saklayın:

$_SESSION['currentUser'] = new User($_POST['username']);

Örneğin:

if($_SESSION['currentUser'] -> getAccessLevel() == 1)
{
  //allow administration functions
}

getAccessLevel () sadece _accesslevel üye değişkeni döndürür Kullanıcı sınıfında bir get yöntemi olduğu.

Bu güvenli midir? Veya müşteri şekilde bazı tür oturumu manipülasyon yoluyla erişim düzeyini değiştirebilirsiniz?

3 Cevap

No, the client cannot modify their access level. The only thing stored on the client is the session key which is either propagated via cookie or GET parameter. The session key ties to a corresponding session record which is a file stored on the server side (usually in a temp directory) which contains the 'punch'. What you don't want, is for a session key to get leaked to a third party:

A leaked session id enables the third party to access all resources which are associated with a specific id.

Bu bir göz atın: http://www.php.net/manual/en/session.security.php

The session information is stored on the server and the user only has access to a key. In practice I have used something of this sort, with extra steps. After validating the user details and storing the User object, I would have a query that is run when viewing any of your protected pages to validate what is in the session is okay with what they're trying to view. In the top of your page.php

if(!validUser($user)){ 
   // Relocate the user
}

nerede

validUser(User $user)
{
   // Some query to verify the information in the session
   // Return the results of verification
}

Ben kullanıcıların bilgisayarınıza çerez saklanan eğer böyle bir şey işlemek için kullanıcı için tek yol olduğunu düşündüm.

Getaccesslevel bir çerez saklanır ya da sadece giriş çerezi kontrol ve kullanıcıların bilgisayarda depolanan sonra değil sunucudan denir?

Ben kullanıcı kaydedilir sonra sunucuda denir eğer daha sonra kolayca güvenlik açıklarıyla diğer yollarla dışında başka işlemek mümkün olmaz zannedebilir.

Sadece benim tahminim Tho, henüz kendimi güvenliği ile bu büyük im değil. Ben başkalarının söylemek ve belki bir şeyler öğrenebilirim ne olduğunu görmek için bu göz kulak olacak.