2011-11-04 7 views
1

나는 사용자 이름과 암호 (해시 + 소금)가 올바른지 확인하는 방법이 있습니다. 그 후, 그리고 만약 사용자가 내가 할 :쿠키 시스템 - 보안

if(isset($remember) && $remember == '1') { 
     setcookie('email', $email, time()+60*60*24*100); 
    } 
    else { 
     setcookie('email', $email, time()+3600); 
    } 

내 질문은 보안 문제에 관한 것입니다. 위의 코드는 안전하지 않은가? 서명과 같은 것이 필요합니까?

$user_email = $email; 
$hash = sha1(rand(0,500).microtime()); 
$signature = sha1($hash . $user_email); 
$cookie = base64_encode($signature . "-" . $hash . "-" . $user_email); 
setcookie('authentication', $cookie); 

당신은 어떻게 생각 : 예를 들어

?

+1

누군가가 로그인했는지 어떻게 확인합니까? – ComFreek

+0

글쎄, 난 쿠키가 정의 (isset) 또는 비어 있는지 확인하십시오 – anvd

+1

오, 브라우저에서 쿠키를 수동으로 설정하는 것은 매우 간단하기 때문에 매우 안전하지 않습니다! – ComFreek

답변

1

일화 시간 : 2002 년 전쯤 학교 네트워크에서 패킷 덤프를보고 성적, 출석률, 학생 정보, 모든 것을 고려한 시스템을 수정해야한다고 말했습니다. 그들이 설정 한 방식은 사용자가 인증 된 후에 시스템이 사용자 이름과 세션 만료만으로 쿠키를 설정하는 것입니다. 브라우저를 시작하고 사용자 이름 (첫 번째 이름, 성)을 선택하고이를 쿠키로 설정했습니다. 나는 접근했다.

그들이 수행해야하는 것은 임의의 128 번호를 설정하고 서버 (번호, 해당 사용자, 시간 초과 값)에서 추적합니다.

3

무작위로 생성 된 해시 또는 서버 측 서버를 확인해야합니다. 사용자는 원하는 모든 데이터를 조정할 수 있으며 쿠키 데이터에 대한 모든 내용을 보낼 수 있습니다. 현재의 계획으로는 원하는 사용자를 쉽게 지정할 수 있습니다. 무서운.

로그인 할 때 IP, UserAgent 및 Expiration과 함께 인증 키를 데이터베이스에 부착하십시오. 사용자가 사이트를 사용하려고 시도하고 IP 또는 UserAgent가 다르거 나 키가 만료 된 경우 강제로 로그 아웃하십시오.

0

사용자가 쿠키 값을 쉽게 변경하지 못하게하려면 웹에서 this class을 사용할 수 있습니다. 모든 쿠키 값의 "합계"에 해당하는 해시를 포함하는 쿠키를 작성하므로 데이터를 변경하면 해시가 잘못됩니다.

은 세 가지 방법이 필요하다 : Cookie::set(cookie_name, value), Cookie::get(cookie_name)Cookie::reset().