본인은 회사와 보유한 고객의 가입 및 회원 자격을 모두 보여주는 '회원 센터'라는 사용자 계정을 가지고 있습니다. 이것은 https://secure.example1.com/membercenter/입니다.이 인증 모델은 얼마나 안전합니까?
본인은 실제 회원 사이트 인 다른 사이트가 있습니다. 이것은 http://www.example2.com/입니다. 이 같은 전용 서버 비록 다른 도메인 (각 사이트.
내가 링크에서 사용자의 사용자 이름과 암호를 포함하지 않고, 회원 사이트에 쉽게 로그인을 제공하고자합니다. 그래서 내가 '무엇을
다음과 같습니다.
사용자가 회원 가입을 위해 '로그인'링크를 클릭하면 userid + unix 타임 스탬프의 md5 해시를 만들고이를 자신의 userid 및 타임 스탬프와 함께 데이터베이스 테이블에 추가합니다
그러면 http://www.example2.com/login?hash=(the 해시로 리디렉션됩니다.
example2의 로그인 스크립트는 해시를 가져와 동일한 테이블에서 조회합니다. 해시가 있으면 해시와 함께 저장된 사용자 ID를 사용하여 고객 데이터베이스에서 사용자 이름과 비밀번호를 검색하여 사이트의 기존 로그인 기능에 전달하고 로그인합니다.
이 해시 로그인 스크립트가 실행되면 5 분보다 오래된 모든 행을 먼저 삭제 한 다음 전달 된 해시 값을 확인합니다. 해시를 찾으면 사용자를 기록한 다음 테이블에서 사용 된 해시를 삭제합니다. 즉, 5 분 이상 된 테이블에는 해시가 존재하지 않습니다. 거기에있는 유일한 해시는 테이블에 남아있는 해시 일뿐입니다. 사용자가 어떻게 든 secure.example1.com에서 링크를 클릭 한 후 www.example2.com으로 이동하면 (예 : 인터넷이 제대로 작동하지 않는다면) 두 번째, dns 문제 해결 example2.com 등). 만료 5 분은 그들이 자리에 앉아 들어갈 때까지 또는 5 분이 지날 때까지 리디렉션 된 URL을 다시로드 할 수 있음을 의미합니다.
사용자가 리디렉션되면 해시 값이 표시됩니다.
secure.example2.com에서 로그인 링크를 클릭 할 때마다 새 해시 값이 계산되어 저장됩니다.
내 질문은 ... 나는 명백한 것을 놓치고 있습니까? 이걸 어떻게 망가 뜨리거나 해킹하겠습니까? 나는 방금 내 사이트에 거대한 보안 구멍을 만들었습니까?
감사합니다. SO Hive Mind!
편집 : 이것은 www.example2.com으로 이동하여 사용자 이름/비밀번호를 사용하여 양식으로 로그인하는 일반적인 모델에 추가됩니다.
EDIT2 : tobyhede에 대한 응답 : 해시를 스니핑. 해시가 사용되면 삭제되기 때문에 공격자는 사용자가 www.example2.com의 로그인 스크립트에 도달하는 것을 중지해야합니다. 그들이 그 일을 막을 수 있다면 5 분 안에 해시를 사용해야 할 것입니다. 그렇지 않으면 자동으로 삭제됩니다.
EDIT3 : Re : 공격자가 자신의 해시를 생성합니다. 해커가 해시를 데이터베이스에 삽입하고 올바른 사용자 ID (사용자가 사용자 ID를 알지 못함)를 포함해야합니다. 그 사람들은 어떻게했을까요? 해시는 단 한 번 사용 된 후 즉시 삭제되므로 아래 공격이 효과가 있다는 것을 확신하지 못합니다.
제목을 "GET/POST 보안 방식으로 임시 해시를 전송하여 사용자를 다시 인증하고 있습니까?"와 같은 내용을 변경하는 것이 좋습니다 ... – Bleadof