아래와 함수를 이용하여 소셜로그인 아이디를 생성하는데요.
엄청난 문제를 발견하였습니다.
절대적으로 유니크한 값을 출력하지 않습니다.
예를들면 아래와같이 출력하면
echo get_social_convert_id("516548797","kakao") . "<br/>";
echo get_social_convert_id("165487879","kakao");
kakao_123e4567
kakao_123e4567
위와 같이 중복된 값을 반환 된다는 문제를 발견했습니다.
$identifier 값이 다른데 말이죠
소규모 사이트면 모르겠는데 회원수가 많은곳은 문제가 발생할것입니다.
A라는 회원이 카카오 로그인/회원가입 함 ( kakao_123e4567 )
B라는 회원이 카카오 로그인/회원가입 함 ( kakao_123e4567 )
그럼 여기서 무슨 문제가 발생되냐?
1. B라는 회원이 소셜로그인을하면 A로 로그인이 됨
2. B라는 회원이 탈퇴하면 A회원 탈퇴처리가 됨 ( A회원으로 로그인이 됫기때문 )
3. A회원이 난리남 탈퇴한적이 없는데 탈퇴 됬다고.
이런 문제 없으셨나요? 탈퇴한적 없는데 탈퇴 되었다고
그건 이문제일 가능성이 큽니다.
이런문제가 일어나는 이유는 adler32, md5 가 완벽하게 유니크한 값을 출력을 못하고 충돌이 일어나기때문입니다.
function get_social_convert_id($identifier, $service)
{
return strtolower($service).'_'.hash('adler32', md5($identifier));
}
댓글 5개
게시글 목록
| 번호 | 제목 |
|---|---|
| 2503 | |
| 2501 | |
| 2497 | |
| 2495 | |
| 2491 | |
| 2490 | |
| 2489 | |
| 2486 | |
| 2484 | |
| 2483 | |
| 2481 | |
| 2476 | |
| 2475 | |
| 2474 | |
| 2472 | |
| 2469 | |
| 2467 | |
| 2466 | |
| 2465 | |
| 2464 | |
| 2463 | |
| 2460 | |
| 2459 | |
| 2456 | |
| 2449 | |
| 2446 | |
| 2441 | |
| 2420 | |
| 2419 | |
| 2417 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기