2011-03-27 4 views
2

내 질문에 대한 답변을 찾을 수 없습니다. 쿠키를 사용하여 등록 할 때 자동 로그인이 필요합니다. 어떤 종류의 정보를 쿠키에 저장해야합니까? 그것은 사용자 이름 + 해시 암호 또는 무엇입니까php user autologin

+0

해시 (md5, sha)에 대해 소금에 절인 암호를 사용하는 것이 더 좋지만 자동 로그인이 아니라 Remember Me입니다. :) –

답변

4

처음에는 다른 사람들의 의견을 반영하기 위해 자동 로그인 기능이 아닙니다. '페이지에서 다른 곳으로 이동하면 나를 기억해'.

내가 과거에 어떻게 보았는지는 frostymarvelous가 설명한 구현과 유사합니다.

쿠키 1 : - - '사용자 이름'

  • 값 사용자의 이름
  • 쿠키 2

    • 이름 : 나는 기본적으로 사용 3 개 쿠키 보았다

      • 이름을 - '소금'
      • 값 -이 특정 logi에 대해 생성 된 임의 소금 N

      쿠키 3 :

      • 이름 - 'authentication_hash'
      • 값 - 오직 당신의 웹 사이트를 복제 할 수있는 데이터의 몇 가지 독특한 조각의 해시. 이 값을 쿠키에 복제 할 수 있으면 사용자가 다시 로그인 할 필요가 없는지 확인하십시오.

      기본적으로, 쿠키 3은 가장 중요한 쿠키 내가 쉽게 복제되는 것을 방지하기 위해이에 몇 가지를 포함 할 것이다 : websitePassword '의

      <?php 
      function isAuthenticationCookieValid() { 
          // $websitePassword would be a unique string stored in a file that is only 
          // accessible by the server running your website. 
          include("websitePassword.php"); 
      
          // $hashOfUserPassword should be a hash of the user's password and should be 
          // retrieved from the database in hashed form because that is how you should 
          // store passwords. 
          $hashOfUserPassword = retrieveUserPasswordFromDatabase($_COOKIE['username']); 
      
          // $salt should just be read from cookie. 
          $salt = $_COOKIE['salt']; 
      
          $authenticationValue = sha1($websitePassword . $salt . $hashOfUserPassword); 
      
          // Compare authentication value in cookie with calculated authentication value. 
          return $authenticationValue == $_COOKIE['authentication_hash']; 
      } 
      ?> 
      

      내용.PHP는 그냥해야한다 :

      <?php 
          $websitePassword = "secretWebsitePassword"; // Obviously use a better password 
      ?> 
      
      나는 또한 당신의 웹 사이트의 보안을 위해 쿠키가 timelimit을 후에 만료 만들기 제안하고 그 특정 해시를 사용하려고, 그래서 만약 당신이 가능하게 당신의 해시에 시간 요소를 추가 할 수

      특정 시간이 지나면 자동으로 로그인되지 않습니다.

    1

    해싱이 반전 될 수 있기 때문에 쿠키에 암호의 해시를 저장하지 않을 것입니다 (적어도 약한 암호의 경우).

    데이터베이스에 저장할 수 있고 쿠키로 사용할 수있는 세션 토큰을 생성하십시오.

    참조 : Session token - how does it work?

    1

    내가이 일을, 내가, 사용자 에이전트를 해싱 사용자 ID를 문자열의 끝을 압정. 사용자가 로그인하지 않은 경우 쿠키를 확인하고 문자열을 분할하고 사용자 에이전트가 동일한 지 확인한 다음 사용자 ID를 기록합니다. 이 btw는 너무 안전하지 않지만 기본적으로 그건 끝이야. 이것은 나를 기억하고있다.

    xtgem과 같은 자동 로그인의 경우 사용자 이름과 고유 식별자가있는 URL이 제공됩니다. 북마크되어 있으며 사용자가이를 클릭하면 사용자가 체크인하고 로그에 기록합니다.