dkstmdc

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

· 2024-12-28 (토) 11:38:50 · 1662 · 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개

2024-12-30 (월) 15:58:58

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

 

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

 

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

 

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

  

@그루드 

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

@dkstmdc 47,000명입니다

2025-01-09 (목) 14:17:31

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

댓글을 작성하시려면 로그인이 필요합니다.

영카트5 팁자료실

455건
+
제목 글쓴이 날짜 조회
25-09-03 조회 1,683
25-08-26 조회 2,004
25-08-18 조회 2,053
25-08-16 조회 1,740
25-08-07 조회 1,859
25-07-31 조회 1,772
25-07-28 조회 1,879
25-07-24 조회 1,829
25-07-21 조회 1,808
25-07-14 조회 1,634
25-07-08 조회 1,876
25-07-01 조회 1,842
25-06-24 조회 1,857
25-06-05 조회 1,727
25-06-04 조회 1,434
25-04-08 조회 2,006
25-04-08 조회 1,654
25-03-24 조회 1,673
25-01-20 조회 2,184
24-12-31 조회 2,204
24-12-28 조회 1,663
24-10-24 조회 2,454
24-10-22 조회 1,856
24-10-21 조회 1,967
24-09-26 조회 3,596
24-09-18 조회 2,635
24-08-26 조회 4,233
24-08-23 조회 1,855
24-07-22 조회 4,631
24-07-18 조회 2,444