아마도 가장 좋은 방법으로 제안 된 어떤 대부분의 타사 응용 프로그램이 할 것은 다음과 같은 필드가있는 "user_sessions"데이터베이스 테이블 작성하는 것입니다 :
session_id (var_char)
user_id (int)
ip_address (var_char)
last_logged_in (unix timestamp)
는 그런 다음를 저장하기 위해 쿠키를 사용합니다 어떤의 MD5 해시 당신은 아마도 같은 :
md5($username.$ip); //since md5 has a lot of reverse look ups now you should use a number of fields to validate. You could use a different crypto function to make it more difficult to crack, but md5 is the simplest version available in all php versions.
편집 : 당신은 다음 들이 이미 로그인 한 경우 볼을 SESSION_ID 데이터베이스와 쿠키에서 저장된 해시를 비교하는 COUPL을 결합하는 이유를. e는 md5 함수의 필드의 "추측 가능한"해싱 형식을 덜 만드는 것입니다. 따라서 쿠키를 편집하고 다른 사람으로 로그인 할 가능성이 줄어 듭니다.
이것은 모든 사용자 (온라인 사용자를 추적 할 수있는 방법)로 수행 할 수 있으며 쿠키에 "지속성"로그인 변수를 설정하기 만하면됩니다. 예.
p_login=true || p_login=false
그런 식으로 자동 로그인 또는 로그인 강제 여부를 알 수 있습니다.
참고 : 암호, 세션 ID 및 사용자를 해시하는 다른 방법으로 http://www.openwall.com/articles/PHP-Users-Passwords을 볼 수 있습니다.
감사합니다. 몇 개의 질문 : sessionID는 쿠키 ('md5 ($ username.ip);')에 저장된 것과 같은 것입니까? // 예제에 따르면 IP 주소가 인증에 사용 된 것 같습니다. 따라서 IP 주소가 변경되면 (프록시) 다시 로그인해야합니다. (문제가 아니라 호기심.) // 또한 last_logged_in 필드의 목적은 무엇입니까? (다시 호기심?) – williamg
IP 주소는 해시와 관련하여 고유 한 것입니다. 사용자가 사용자 이름을 해싱하고 있음을 깨닫게 될 가능성이 더 큽니다. 그런 다음 쿠키를 해킹하여 다른 사람과 로그인 할 수 있습니다. 그것이 md5 ($ username. $ ip)이면 해시가 무엇인지 알아내는 것이 더 어렵습니다. IP가 쿠키에 md5 해시로 저장 될 때 변경되는 것은 중요하지 않습니다. 따라서 세션 ID가 'md5 ($ username. $ id)'인 DB에 세션이 있는지 확인하면됩니다. 그것을 만들지 않으면. 새 IP 주소 및 해시로 업데이트하는 경우 마지막으로 로그인 한 시간과 IP를 저장하는 것은 보안을위한 것입니다. 무단 액세스가 있으면 확인할 수 있습니다. – User123342234
좀 더 명확히하기 위해 내 답변을 업데이트하십시오. – User123342234