2013-10-03 3 views
2

세션 보안에 대한 자습서를 많이 읽었습니다. 사람들의 충당이 사용에 대한 이야기 ​​:로그인 세션 보안

$_SERVER['REMOTE_ADDR'] 

하지만 난 어떤 사람들은 프록시 서버를 사용하는로 사용하지 않습니다. 나는 질문이 있습니다에 대한

$_SERVER['HTTP_USER_AGENT'] 

나는 사람들이 내가 이것을 사용하는 경우는 그래서 잘 모르겠어요 IE에서이 문제를 읽어 보시기 바랍니다. 그냥 이렇게하면 충분하지 않습니까?

$ID = $user['ID']; 
$Salt = mcrypt_create_iv(32, MCRYPT_DEV_RANDOM); 
$_SESSION['ID'] = hash('sha256', $ID . $Salt); 

소금을 데이터베이스에 저장하고 사용자가 로그 아웃하거나 10 분 동안 아무 것도하지 않으면 삭제합니다. 그리고 나서 모든 페이지에서 사용자가 올바른 ID를 사용하는지 확인하는 함수를 실행합니다. 괜찮습니까? 아니면 다른 것을 권하고 싶습니까?

답변

3

보낸 HTTP 헤더를 신뢰할 수 없습니다.

브라우저에서 HTTP_USER_AGENT의 내용을 전송할 수 있습니다.
REMOTE_ADDR은 프록시 일 수 있지만 보낸 사람의 IP 주소를 신뢰할 수있게 제공합니다.

정상적인 경우에는 메소드가 충분히 강해야합니다 (정확한 세션 ID를 추측하기가 매우 어려울 것입니다).

+0

고마워요,하지만 그걸 개선 할 수있는 다른 건 없나요? 왜냐하면 나는 정말로 어느 누구도 세션 ID를 해독하기를 원하지 않기 때문입니다. – Szenis

+0

@Szenis 당신은 HTTPS 프로토콜을 통해 귀하의 사이트를 호스팅하는 것과 같은 것을 할 수 있습니다. – MonkeyZeus

+0

@Szenis 물론 사용자 에이전트를 저장할 수 있습니다. 나는이 데이터가 신뢰할 수 없다고 말했지만 잠재 해커는 보낸 사용자 에이전트도 추측해야합니다. – ComFreek