Bir Cookie kaydedilmiş olmalıdır ne tür bilgiler (PHP)

3 Cevap php

Kullanıcıların oturum açma / oturum kapatma sınıf yapma Im, kullanıcının seçimine dayalı çerezleri ayarlar. Kullanıcı e-posta / şifresini girer ve bu veritabanı, e-posta / parola açılan bir oturum oluşturulur var denetler ve bir çerez (kullanıcıların kimliği ile) ayarlanır ve kullanıcının yönlendirildiği ... Ben daha sonra kullanıcılara açan bir işlevi var , o kurabiyenin kaydedilen kullanıcı kimliği alarak bu kullanıcı kimliği var olup olmadığını denetleme ve sonra yine bir oturumda kullanıcıların veri kaydetme tarafından ... ben bu konuda güvensiz herkes en görürseniz şey potentialy / yanlış merak ediyordum.

Kısa Örnek im siz bunun özü alabilirsiniz emin olun ...

function login($email, $password, $remember){
  // Check the database for email/password combo
  if(/*user exists*/){ // if the user exists
    $_SESSION = /*User data*/ // save the users data in a session
    if($remember){
      setcookie('user_id', /*User id*/); // save the user id in a cookie
    }
    header("location: index.php");// redirect
  }
}

function Check_Cookie(){
  if(isset($_COOKIE['user_id'])){
    return $this->Log_In_ID($_COOKIE['user_id']);
  }else{
    return false
  }
}

function Log_In_ID($id){
  //Check the database if the user id exists
  if(/*user exists*/){ // if the user exists
    $_SESSION = /*User data*/ // save the users data in a session
    header("location: index.php");// redirect
  }else{
    return false;
  }
}

Onun değil sormak, ama bunun özü alabilirsiniz emin im çalışıyor im ... Herkes bu potansiyel olarak yanlış bir şey görmüyor mu ne ayrıntılı bir örnek. Siz bunları duymak için herhangi bir öneriler id aşk varsa ... Ayrıca, siz kullanıcıları, ya da herhangi başka yollarla giriş cepten kullanırım.

3 Cevap

Kullanıcı kimliği ardışık sayı ise herkes sadece (benim 1274 ise, ben bu aralıktaki diğer bazı numaralar deneyebilirsiniz) kendi dayalı başka makul görünümlü sayıda kendi çerez değiştirmek ve hemen parodi gibi, bu oldukça güvensizdir o kullanıcı.

Bir GUID gibi, bu kullanıcı ile ilişkili geçici kimliği atayarak daha iyi olurdu. Guıd'ler astronomik eşsiz ve pratik çarpışma geçirmez olduğundan, onlar da sanırım ya da sistem dışında tahmin etmek neredeyse imkansız.

Kullanıcı günlükleri, yeni bir GUID oluşturmak ve kullanıcı ile saklamak zaman:

UserID        TokenID                                        Expires
1274          {3F2504E0-4F89-11D3-9A0C-0305E82C3301}         9/25/2009 12:00:00

Bir kullanıcı döner, simge tarafından kendi kullanıcı kimliğini baktığınızda emin belirteç süresi dolmamış olmak ve onların belirteci değiştirmek Sonra içeri giriş. Bu şu karşı sizi korur:

  • Bir saldırgan, başka bir kullanıcının simge tahmin ve onları parodi değil
  • Belirteci erme çerez son kullanma tarihini gözardı ederek atlatılabilir edilemez
  • Bir saldırgan kullanıcının çerez erişmek için yönetmek olsa bile jeton, sürekli değişim yana, devralmaya fırsat penceresi çok küçük.

Sen çerez verilerini güven olmamalıdır. Ben çerez düzenlemek ve (bir yönetici kullanıcı olması muhtemel olan), "1" demek benim kimliğini ayarlamak ne olur?

Temelde, bunu yapmayın.

Ama reauthenticate zorlamak - Eğer bir "beni hatırla" türü işlevini istiyorsanız kullanıcı döner zaman giriş formunu önceden doldurmak, böylece sadece bir çerez bir kullanıcı adı kaydedin.

Çerezler çok kolay değişmiş-böylece sadece kimliğini saklamak eğer bir kullanıcı bunu değiştirebilir. Onlar potansiyel diğer hesaplara erişmek ve olabilecek tahmin hatta yönetici erişim olsun. Ben kimlik doğrulaması için çerezleri kullanırken Genellikle bir simge ile birlikte kimliğini saklamak.

Örneğin bir kimlik karma ve tuz değer alıp-Sen saklamak kullanıcı bağlandığında o zaman belirteci doğrulamak yapabilirsiniz. Bu mükemmel değildir ve bir yüksek güvenlik sitesi-ama iyi bir başlangıç ​​olmalı, standart bir site için daha önemli noktalar vardır.

Başka bir taktik uzun bir benzersiz bir oturum kimliği saklamak ve Lütfen kullanıcı oturum açmak için kullanmak için