사용자가 기억 기능을 선택하면 사용자 이름과 ID를 쿠키에 저장합니다. 그런 다음 사용자가 사이트로 돌아 오면 데이터베이스와 사용자 이름 및 ID를 확인하여 사용자가 합법적인지 확인합니다. 다음으로 세션 변수에 쿠키 데이터를 저장하여 사용자를 로그인합니다. 이 방법이 사용자를 기억하고 로그인하는 적절한 방법입니까?쿠키에 사용자 정보 저장
답변
쿠키는 데이터를 저장하는 매우 안전한 방법은 아닙니다. 쿠키는 사용자가 수정할 수 있으며 누군가 귀하의 사이트를 "해킹"할 수 있습니다. 내가 제안 할 것은 쿠키의 일부 문자열을 저장하는 것입니다. 또한 데이터베이스의 쿠키에서 해시 된 문자열을 저장하십시오. 이렇게하면 사용자가 사이트로 돌아올 때 쿠키가 채워 졌는지 확인하고 데이터베이스의 해시 된 값과 일치시킨 다음 해당 해시 값을 소유 한 사용자를 찾습니다. 모두가 유효한 경우, 필드까지 유효한에서
데이터베이스 설정
secretKey PK varchar
userid (could be unique) int
validUntil int or date/time
//If userID is unique you will have to remove this row from the
// database when a new key is made for the user, This would then mean
// that a user would only be allowed to be rememberd on one computer
의사
//User logs in with remember me
//set cookie to something like md5(userid,username,timestamp)
//store the md5 in the database layout
//User Returns to site
//check to see if cookie is set
//if cookie set
//find md5 in database which is logged with user id
//if found and not yet expired log in
//else show login page
//if cookie not set show login page
. 그들을 로그인 당신은 로그인에서 이주 말을 설정합니다. 유효 기간이 경과 한 후에는 해당 키가 작동하도록하고 사용자가 쿠키가 만료되었는지 확인하십시오.
쿼리 키 = "// 여기 MD5를 넣어"에서 rememberme 및 validUntil로부터
SELECT * 로그인 확인> 시간()
가 좋아, 난 당신이 무슨 말을하는지 볼 수 있지만 내가 어떻게 validUntil 필드 처리하나요? 그 날짜가 지날 때 나는 무엇을해야합니까? – user532493
새 게시물보기 – bretterer
이 secretKey 필드가 모든 사용자와 함께 테이블에 있어야합니까, 아니면 secretKeys에 대한 새 테이블이 있어야합니까? – user532493
번호
그것은에 얼마나 안전한 따라 달라집니다 당신은 얻고 싶습니다.
- 쿠키 (사용자 이름/ID/등)의 특정 항목을 저장하지 마십시오. 보안을 강화하기 위해 수행 할 수있는 작업이 일부 또는 전부입니다. 무작위로 생성 된 난센스 (토큰)를 사용하십시오.
- 당신의 DB에서는 토큰 < 수 있습니다 -> 사용자 매핑
- 이 DB에 대한 토큰을 확인하고 일치
- 아마도 "소비"그것으로 (플래그 토큰을 파괴에게있을 때의 사용자를 기록 당신이 무엇을 결정하든, 토큰은 더 이상 작동하지 않아야합니다.) 사용자가 (당신의 DB에없는, 즉 하나 또는 그 소비로 신고 된) 부실 토큰을 보내는 경우
- 사용
https
만이이 것을 의미 등 - 쿠키, 로그인을 전송하는 토큰이 손상되었을 가능성이 있습니다. 인증 된 사용자 (그리고 심지어 아약스도)에 대한 모든 요청에 대해, 부실 토큰 시도 목록과 함께 로그인 한 토큰 (세션에 저장할 수 있음)을 비교하십시오. 일치하는 항목이 있으면 인증 된 사용자가 토큰을 납치했을 가능성이 있습니다. 그들을 쫓아 내라.
알았어, 모든 조언을 해줘서 고마워. – user532493
- 1. 쿠키에 로그인 정보 저장
- 2. 로그인시 모든 사용자 정보 저장
- 3. 쿠키에 여러 값 저장
- 4. Struts2 쿠키에 로케일 저장
- 5. 쿠키에 그림 저장
- 6. 쿠키에 저장해야하는 정보 유형 (PHP)
- 7. 아이폰 쿠키에 사용자 이름과 비밀번호 저장
- 8. ASP.Net 세션 쿠키에 사용자 비밀번호를 저장 하시겠습니까?
- 9. 쿠키에 정보 저장 및 다른 도메인의 쿠키 조작
- 10. ASP.NET : 사용자 정보 저장
- 11. 허가없이 사용자 정보 저장
- 12. 계정없이 사용자 정보 저장
- 13. 사용자 정보 저장 Django
- 14. 사용자 이름이 쿠키에 저장됩니다.
- 15. FullCalendar - 쿠키에 이벤트 저장
- 16. 쿠키에 앰퍼샌드 저장 문제
- 17. 쿠키에 양식 값 저장
- 18. 로그인 한 사용자 정보 저장
- 19. 카사 드라의 사용자 정보 저장
- 20. 중첩 된 배열을 쿠키에 저장
- 21. Java에서 쿠키에 다중 값 저장
- 22. 사용자의 oauth 키를 쿠키에 저장
- 23. PHP : 쿠키에 base_64 데이터 저장
- 24. 쿠키에 여러 이진 값 저장
- 25. Rails 쿠키에 jQuery 변수 저장
- 26. iPhone : 사용자 데이터를 plist, SQLite 또는 쿠키에 저장 하시겠습니까?
- 27. 정적 클래스 내에 사용자 정보 저장
- 28. 응용 프로그램 변수에 사용자 세부 정보 저장
- 29. aspNetMembershipProvider를 사용하여 세션에 사용자 정보 저장
- 30. Solr을 사용하여 문서에 사용자 지정 정보 저장
http://stackoverflow.com/questions/2594960/best-practice-to-implement-secure-remember-me –