테스트 사이트 - 개발 중인 베타 버전입니다

[필독] 소셜로그인 아이디 중복, 엄청난 이슈

· 10개월 전 · 524 · 5

아래와 함수를 이용하여 소셜로그인 아이디를 생성하는데요.

엄청난 문제를 발견하였습니다.

 

절대적으로 유니크한 값을 출력하지 않습니다.

 

예를들면 아래와같이 출력하면

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개

10개월 전

오마이갓. 근데 데이터베이스에 mb_id 쪽에 primary key 선언 되어있지 않나요?

 

10개월 전

저도 얼마 전에 발생했습니다. A(naver_1234)가 탈퇴 후 B가 가입했는데 아이디가 naver_1234로 되어서 A의 구매내역 및 게시글이 모두 노출... 

 

function get_social_convert_id($identifier, $service)
{
    return strtolower($service).'_'.hash('adler32', md5($identifier));
}

 

이 부분을 어디에 추가해주면 되는건가요?

  

@그루드 

회원수가 어떻게 되셨어여?

10개월 전

@dkstmdc 47,000명입니다

10개월 전

전 이거때문에 따로 함수 만들어서 체크 합니다.

게시글 목록

번호 제목
1874
1873
1870
1862
1846
1845
1837
1835
1823
1787
1781
1777
1771
1750
1746
1743
1742
1738
1714
1710
1700
1699
1696
1694
1691
1684
1662
1659
1656
1637