2014-04-26 3 views
0

내 웹 사이트의 개인 섹션에서 사용자를 인증하기 위해 쿠키 만 사용하려고합니다. 사용자가 로그 아웃하지 않는 한 무한정 로그인 상태를 유지하기를 원합니다. 다음과 같이 작동합니다 :쿠키 만 사용하는 사용자 인증

1. 성공적으로 로그인하면 나는 임의의 해시를 생성하고 SSL 쿠키를 사용하여 사용자에게 HTTP 쿠키로 저장합니다. 또한 사용자 ID와 사용자의 장치와 함께 데이터베이스에 해시를 저장합니다.

2. 새 페이지가 요청 될 때마다 사용자에게 쿠키가 있는지 확인합니다. 그는 해시를 얻었고 데이터베이스에서 검색했습니다. 일치하는 항목을 발견하고 장치가 동일하면 사용자라고 가정하고 페이지를 제공합니다. 해시 또는 장치가 변경된 것을 찾지 못하면 사용자가 아닌 것으로 간주하고 다시 로그인을 요청합니다.

내 질문 :이 방법이 보안 상 허용됩니까? 나는 결국이 두 가지 경우에 로그인 한 채로 사용자를 유지하는 것보다 보안이 덜한 이유를 알 수 없습니다. 결국 위험은 같고 공격자가 해시를 발견하여 사용자를 가장하게됩니다. 이를 방지하기 위해 사용자 장치를 추적하므로 공격자는 해시를 발견하고 동일한 장치를 사용해야합니다.

의견에 감사드립니다.

답변

2

기본적으로 대부분의 언어/프레임 워크에서 제공하는 세션 기능입니다.

해시 값이 사용자가 엔트로피 소스로 로그인 한 시간을 사용하지 않도록하십시오. 즉, 침입자가 대략적인 로그인 시간을 알고 있다면 이것은 쉽게 무차별 적으로 강제 될 수 있기 때문에 h (username + login_time)를 사용하지 마십시오.

실제로 사용하는 언어/프레임 워크는 무엇입니까? 대부분의 경우 세션 "기능"을 세션 (세션이 아닌)과 함께 사용하여 옵션을 처음부터 구현하지 않고 추가 보안 문제를 만들지 않도록 할 수 있습니다.

+0

의견을 보내 주셔서 감사합니다. 필자는 PHP로 자체 프레임 워크를 만들 예정입니다. 기능이 거의 필요하지 않기 때문에 (인증 중 하나가 됨). 이것은 또한 길을 따라 물건을 배울 수 있습니다. 나는 내가 더 안전하게되기를 원한다면 아마이 물건을 알아낼 수있는대로 확립 된 틀과 함께 가야한다는 것을 안다. –

+0

공정하게, 이것은 빌드 세션 기능이 PHP에서도 구현되는 방법입니다. cookie_lifetime을 0이 아닌 값으로 설정하면 세션 쿠키가 아닌 영구 쿠키가 사용됩니다 : http://www.php.net/manual/en/session.configuration.php#ini.session.cookie- 평생에도, MVC 프레임 워크의 모든 구성 요소는 아니지만 일부는 Zend에서 구성 요소를 가져 오는 것이 좋습니다. 주로 젠드를 사용하지 않지만 레거시 코드 기반에서 캐싱이나 세션 관리와 같은 기능이 필요한 경우 젠드 구성 요소를 매우 쉽게 통합 할 수 있습니다. – thexacre

+0

Zend 구성 요소를 별도로 사용할 수 있는지 알지 못했습니다. 고마워. 고마워. –