2010-12-29 3 views
3

사용자가 암호와 사용자 이름을 성공적으로 입력하고 세션을 설정하려는 경우 세션에 어떤 데이터가 포함되어야합니까? 나는 이것에 대해 매우 혼란 스럽다. 무작위로 생성 된 문자열이어야한다는 것을 읽었고, 해쉬 된 user_id + salt를 저장할 수 있는가? 나는 이것이 참으로 올바른 사용자인지 확인 할 수 있도록하려면 :세션에 저장할 내용

형태 :

<form method="POST" action=""> 
<input type="hidden" name="auth_token" value="<?php echo $form_token; ?>"> 
Username: <input type="text" name="username"> 
Password: <input type="password" name="password"> 
<input type="submit" name="action" value="Login"> 
</form> 

나는 다음과 같이 수행 할 :

if form token in session = form_token var in form 
    if username and password are correct 
    set session hash(user_id + salt) 

편집 : 잊으 셨나요을 추가하려면 공유 호스팅에있을 가능성이 큽니다.

+0

자신의'tmp' 디렉토리와 suPHP와 같은 것을 제공하는 공유 호스팅 회사를 선택하십시오. – webbiedave

답변

7

세션 배열에 사용자 ID를 저장할 수 있습니다. 세션 ID 쿠키 만 브라우저로 전송되며 '외부 세계'는 세션 자체에 저장된 내용을 인식하지 못합니다. 사용자가 인증되었음을 나타내는 항목을 저장하는 것도 편리합니다.

어디서나 일반 텍스트 비밀번호를 저장하지 마십시오.

$_SESSION["UserAuthenticated"] = true; 
$_SESSION["UserID"] = $userID; 
1

세션에는 사용자 이름이나 다른 내부 사용자 ID가 포함되어야합니다.

세션 데이터가 쿠키로 사용자 컴퓨터가 아닌 서버에 저장되므로 해시, 소금 등을 사용할 필요가 없습니다. 암호를 이미 인증 했으므로 암호를 저장할 필요가 없습니다.

1

일부 사람들은 ID를 저장하기 만하면됩니다. 소금에 절인 해시 버전에 대한 귀하의 생각은 충분하지만 과도한 것처럼 보입니다. 후속 페이지로드시 데이터베이스에 대해 ID를 확인하십시오.

1

사용자가 인증되었음을 나타내는 간단한 부울을 피할 이유가 있습니까? 그렇지 않다면, 나는 다음과 같이 제안 할 것이다.

<?php 

if ($_POST["username"] == 'test' && $_POST["password"] == 'test') { 
    $_SESSION['authenticated'] = true; 
} 

?> 
+2

"authenticated = true"를 설정하면 설정 한 조건을 제어하기 때문에 문제가 없습니다. 그래서 사용자가 귀하의 사이트와 상호 작용하는 방식에 달려 있습니다. 이상적으로 사용자는 후속 요청 (예 : 포럼 게시)을 통해 사용자를 식별하므로 사용자 ID를 저장하는 것이 좋습니다. – Scuzzy