개드립

즐겨찾기
최근 방문 게시판

개발자의 시선에서 보는 요기요 쿠폰 대란

안녕하세요. 파릇파릇한 주니어 개발자입니다.

 

이번에 불쌍한 요기요 사태를 보고 몇 자 적어봅니다. 요기요 개발자분이 있다면 애도의 메시지를 보냅니다.

 

사실 개발자가 아닌 사람이 봐도 얼마나 불쌍한 사태인지 감이 오긴 할 거지만 그래도...

 

1. 어떤 문제였나?

 

(저도 몰랐지만) 옥수수수염차를 사면 뚜껑에 요기요 쿠폰 코드가 적혀있는데 코드가 5자리로 너무 짧아서 무차별 대입했을 때 유효한 쿠폰을 얻어내기 매우 쉬운 구조였습니다. 혹시나면 역시나라고 무차별 대입을 통해 천 장이 넘는 쿠폰을 가져간 사용자가 등장했습니다.

 

ì¤ìê° ì기ì ê·¼í© feat.ì¢ë¨

 

2. 원래 쿠폰 발급 프로세스가 이렇게 허술한가?

 

제가 경험해본 쿠폰 발급 프로세스는 다음과 같습니다.

 

사업부 요청 -> 쿠폰 번호 생성 -> 쿠폰 테이블에 등록 -> 쿠폰 사용 가능한 날짜가 되면 등록 가능한 상태로 변경 -> 사용자가 사용

 

여기서 쿠폰 번호는 영어, 숫자 섞어서 보통은 12자리 정도로 많이 쓰는데, 병뚜껑이라는 특성상 짧게 만들 수밖에 없었던 것 같습니다. 만약 개발자가 저였다면 5자리 쿠폰 번호는 보안상 매우 취약할 것 같기 때문에 사업부에 문의해서라도 유통기한+5자리 라던지 제조일자+5자리 등으로 하면 어떻겠냐고 제안했겠지만 사업부-개발자가 좋은 관계에 있지 않은 회사인 경우에는 이미 사업부에서 얘기 다 끝내고 개발자랑 견적 내기 시작했을 가능성도 있기 때문에 무작정 개발자를 욕할 수만은 없습니다.

 

3. 막을 수 있는 사태였는가?

 

n회 이상 틀리면 n분간 쿠폰 등록을 못하게 하는 정도의 로직만 있었어도 천 장 넘게 발급하는 터무니없는 사태는 막을 수 있었을 거라 생각합니다. 그 외의 방안은 딱히 저도 생각나지 않네요. 어차피 처리하는 입장에서는 해당 사용자가 쿠폰을 어떻게 얻었는지는 알 수 없으니까요.

 

+ 댓글 보고 얻은 아이디어 추가

(영문 대소문자 + 숫자) 조합으로 5자리를 만들어 난수를 구성하면 경우의 수가 647만개가 (62C5) 나옵니다. 요런 식으로 했어도 충분히 방어가 가능했을 것 같네요. 여기다 특문이 추가된다면 경우의 수가 1400만개가 됩니다. 만약 병뚜껑에 특문 박기가 어려웠다면, 대소문자 + 숫자만 했어도...!

 


4. 부정 사용자들 추적은 가능한가?

 

기술적으로는 100% 가능합니다. 발급받고 사용한 사람, 발급만 받은 사람, 무차별 대입 시도한 사람 전부 추적할 수 있습니다.

보통의 경우라면 쿠폰 발급같은 경우는 1회 시도마다 전부 로그를 남기게 설정하며 (이래야 CS 대응할 때도 로그 보고 응대해줄 수 있으니까요) 이렇게 수집한 로그를 보면 전부 다 잡아낼 수 있을 거라 생각합니다. 특히, 대량으로 발급받거나 발급 후 사용한 경우에는 로그 없이 DB만 조회해도 즉석에서 모두 잡아낼 수 있습니다.

 

한 가지 발생할 수 있는 문제는 쿠폰을 많이 가졌다고 해서 모두 부정 사용자로 간주해도 되는 것인가? 인데, 이것은 해당 고객의 쿠폰 발급 로그를 보면 쉽게 알 수 있을 거라고 생각합니다. 예를 들어 쿠폰 1000개 받으려고 3천 번 시도한 사용자가 있다면 킹리적 갓심으로 부정 사용자라고 볼 수 있습니다. 반면에 1000개 받으려고 1050번 시도했다면 이 사람은 진짜 옥수수수염차를 1000개 샀을 수도 있고요.

단순히 시도 횟수만 보는 것이 아니라, 이미 사용된 쿠폰 번호를 입력하는 경우까지 모두 고려하면 부정 사용자의 90%는 잡을 수 있을 거라 생각합니다. 정상적인 시도인 경우 이미 사용된 쿠폰 번호를 입력하는 일은 매우 힘든 일이겠죠. (오타가 났는데 우연히 다른 쿠폰 번호일 경우니까요)

다만 운 좋게 한 5번 했는데 5번 모두 얻은 경우. 요런 것은 사용했다 하더라도 잡아내기 어렵습니다. 소량 + 실패한 경우도 없음.

 

5. 로그 분석이 그렇게 쉬운 일인가?

 

사내에 데이터팀이 있는 조직이라면 몇 시간만에 로그 전량 분석해서 부정 사용자 전원 색출할 수 있습니다. 관련 법령이 있다면 처벌할 수도 있겠죠.

 

 

세 줄 요약

1. 사업부 + 개발자의 안일한 생각이 모여서 만든 인재이다.

2. 그러나 부정 사용자는 90% 이상 잡아낼 수 있다.

3. 요기요 힘내세요

104개의 댓글

애초에 숫자 5자리가 말이 안되는거였음

머가리 좀만 굴리면 숫자 10개 + 대문자 26개 + 소문자 26 조합으로

9억개 이상의 조합을 만들수 있는걸 꼴랑 10만개 조합으로 만들었으니...ㅋㅋ

그냥 광동이랑 요기요랑 이벤트 관련자들 다 아무 생각이 없었던것처럼 보임.

 

0
2019.06.18

이벤트 하기 한달전 난 2박스 사서 뚜껑만 존나게 모아서 날짜만 기다렸다가 해봤더니 시발 뚜껑만들때 새겨진 숫자가 아니고 프린트된 글씨였던거임 조까시발 뚜껑 다 버림

500원 하나됨 2박스에 번호있는거 한개나옴 콱 시팔

그리고 한박스 더 산건 비밀

약올라서 쿠폰번호 맘대로 3번하고 포기 다안됨

0

이벤트 상품 유통기한은 작성자가 입력할거임?

0
2019.06.19

뭐야 코드가 숫자만 5자리였다고? 아니지? 설마 아니지?

0
무분별한 사용은 차단될 수 있습니다.
제목 글쓴이 추천 수 날짜
싱글벙글 장례식장이 심심할까봐 걱정된 디시인 14 험피 23 2 분 전
ㅎㅂ) 대학축제에 QWER 온다해서 난리난 건대 에타 55 판다곰 41 7 분 전
[정보] 펌) 네이버는 오히려 라인을 팔고 싶어한다는 썰 58 Jks주주 55 12 분 전
강민경 인질 잡고 있는 칼든강도 44 while 49 21 분 전
시골살면 좋은점 37 포세이돈 44 23 분 전
25살 패션스쿨 한국인 졸업생이 졸업발표회에 발표 예정이었... 23 추천요정이여름 55 26 분 전
ㅆㄷ)흔한 도내 sss급 여동생 ㄷㄷ 29 사익 55 35 분 전
25년만에 밝혀진 해왕성 새로운 이미지 63 추천요정이여름 73 38 분 전
ㅆㄷ) 선배, 저랑 내기 하실래요? manhwa 30 세미 38 38 분 전
의대 증원 및 의료개혁에 반대하는 의사가 꺼내든 최후의 무기 36 소름 63 38 분 전
롤) T1, G2 3:2로 꺾고 MSI 브래킷 스테이지 승자조 진출 105 수육을쏘면탕수육 35 43 분 전
50대50에서 지분 조정하면 생기는 일 19 246O1 52 43 분 전
탈북자, "북한에 다시 넘어갈지 생각 중이다" 48 카이부츠와다레다 54 46 분 전
신검2급 뜬거 따져서 4급 받았다는 사람 .jpg 48 사무직렉카 100 53 분 전
ㅆㄷ)게임하다 찌찌큰 여친 사귀는 만화 53 일토준지 47 54 분 전
허무함 또는 혈압주의)황영웅 근황.jpg 76 세기의명작스타워즈 97 1 시간 전
성심당, 대전역 사건으로 궁금해 하는 사람이 있을지도 모르... 61 middle 66 1 시간 전
발음 좀 잘못 썼다고 조롱하는 한국인들이 섭섭한 재미교포.jpg 102 렉카휴업 117 1 시간 전
"제목에 S급이나 SSS급이란 말은 많이쓰는데 왜 SS급은 ... 47 ghoooost 72 1 시간 전
뉴진스 스타일리스트 팀장 “하이브가 협조 않으면 고소 당할 ... 56 고양이따뜻해 51 1 시간 전