포럼
회원 쪽지발송 대안이 필요합니다.
2013.02.15 03:27
발송시마다 captha 같은걸 걸던지, user_id로 발송을 시키던지 해야합니다.
현재 receiver_srl 방식은 어떤문제가있냐면요...
최근 제사이트에 테스트를해보았습니다.
열줄짜리 코드를 쓰면 한시간이면 왠만한 회원 전체한테 쪽지 다날아갑니다.
악용할우려가있어 전체코드는 다안적고싶지만,, 일단 어떤식으로 날려봤는지 보여드릴게요.
파싱을위한 http 클래스는 왠만큼 다아실거라고봅니다.
예를들면,
클래스 가져오고,타겟찍고
$url = parse_url("http://xpressengine.com");
/* 악용 우려로 생략 */
//제아이디로 로그인합니다.
//그냥 로그인이되겠죠 당연히 post로 보냈으니까.
$h->setPost("act=procMemberLogin&user_id=abcd&password=qefqwefwef");
$h->sendData();
그다음에 현재세션을 유지하면서 쪽지를돌려줍니다.
$title = urlencode("발송테스트");
$content = urlencode("잘날아가죠?");
for($i=4; $i<=1000; $i++){
$h->setPost("act=procCommunicationSendMessage&receiver_srl=$i&title=$title&content=$content");
$h->sendData();
}
xe는 전체db입력 인덱스를 sequence로 정의하고있기때문에 회원번호가 불규칙하게 띄엄띄엄 지정되어있지요.
위처럼 작성하면 for문이 4번부터 (일단 관리자한테 가겠죠?) 쭈~~~욱 잘날아갑니다. receiver_srl로 지정한 번호가 문서번호이거나, 파일번호거나, 댓글번호이거나 기타 다른번호면 그냥 그런대로 넘어가고 그다음번호로 또발송을 시도하죠.
자동발송방지 코드.. 좋긴한데 불편하니까, 우리 다른방법을 생각해봅시다.
user_id가 제생각엔 오히려 더나은듯 합니다.
구글코드 이슈에 등록하고싶었지만, 좀더많은사람들이 보셨으면해서 그냥 여기올려둡니다.
@엑스셀코드 @똥똥 // 어떻게생각하시는지요
댓글 20
-
푸시아
2013.02.15 04:33
-
Xiso
2013.02.15 16:50
그렇죠.. 관리자가 보낼때야 상관없다마는.. 이건... 1 ~ 99999999 까지 파싱형태로 전송하는데 하룻밤도안걸리네요
-
또별
2013.02.15 20:04
그런것도 있나보네요..그렇다면 댓글다는 것도 그럴수 있겠네요,,그것도 그거지만, 그런식으로되면 1000만명 회원이 있을경우 하루밤 사이에 시퀀스시리얼은 1000만개 증가하겠죠.,, 쪽지는 시퀀스시리얼에 반영하지 않았으면 좋겠네요.. 10만명이 각각 100명씩에게 쪽지 보내면 시퀀스시리얼이 100만개 증가 하고.,열번씩 보내면 1000만개의 시퀀스시리얼이 증가하는데, 시퀀스시리얼 10억개 증가하는데는 기간이 얼마 안걸리겠어요..문제가 없다고 하는데,왠지 걱정되요.쪽지는 시퀀스시리얼 숫자 잡아먹는 킬러인데,.나중에 가면 모든 테이블들의 시리얼이 각각 모두 몇만개씩 갭차이로 시리얼이 번갈아 부여되게 되잖아요.시퀀스시리얼이 기하급수적으로 증가하는데요...여기서 시퀀스시리얼을 사용하므로서 시리얼이 중복되지 않는 의미가 어떤 경우에 어떤 장점이 있는지 궁금해요.
-
Xiso
2013.02.16 03:59
일단 급한데로 프리스패머로 zsfCode라도 넣을까 생각중입니다만,,
문제가좀 있기는합니다. 많이요.
-
누리안
2013.02.15 22:38
저도 Xiso님과 다른 분들의 의견에 전적으로 동의합니다.
저는 스팸 쪽지라는 부분으로 토픽을 선택해서 사용자 포럼에 http://www.xpressengine.com/userForum/21219234 와 같은 글을 등록하였으나, 1.7 버전에서도 쪽지 발송의 문제점에 대해 크게 해결된 부분은 없는 것 같더군요.
이 문제는 좀 더 비중있게 다뤄져야 할 가치가 충분히 있습니다.
-
Xiso
2013.02.16 03:59
같은생각을 가지신분이 이미 있으셨군요, 왜진작에 못보았을까요
-
윈컴이
2013.02.16 17:12
저런 취약점이 있네요.
이메일이나 아이디로 바껴야 한다고 저도 생각합니다 ^^;;
-
Xiso
2013.02.17 00:48
파싱후 for문 하나면 끝이죠....
-
또별
2013.02.16 22:24
이것이 1.4x 와 15x 모두 해당되는건가요? 이론...일단 쪽지를 막아야 겠네요.
-
Xiso
2013.02.17 00:48
현재까지 쭈욱 변함없는 함수니깐요.. 쪽지발송은...
-
또별
2013.02.17 01:26
쪽지가 그렇다면 댓글도 가능할 수 있겠네요.
-
Garon
2013.02.17 13:02
음 id 도 결국 반복문으로 사전식 대입이면 뚤리긴 하겠네요(능률은 떨어져도)
- 아마 비번 뚫기 위해서 만들어진 레인보우 테이블이 숫자+영문자 조합으로 10자리 까지인가 11자리까지인가가 그냥 공개 되어 있으니까요... (거기다 아이디에 특문이나 대문자 넣는 경우는 거의 없고, 이메일도 아이디 처럼한뒤에 @gmail, @daum, @naver 만 붙여서 체크하면 뚤리게 될거구요)
그냥 서버에서 같은 내용을 반복해서 전달 할때, 켑차가 작동되게 하는게 가장 안전하지 않을까요? -
Xiso
2013.02.17 23:14
관리자일 경우에만 켑차를 패스하고 나머지는 켑차를 작동시키는것도 방법중의 하나인것같아요.
그리고 아이디나 이메일주소는 member_srl에 비해 굉장히 경우의수가 많으니까요..
아마 member_srl로 처리한것은 아이디나 이메일주소 어떤걸 사용하더라도 상관없이 발송하기위해서겠죠..?
물론 처음 xe가 나왔을땐 email_address를 사용하지않았으니 .. 아니려나.. 내가지금무슨소릴하는거지.. ㅋㅋ
-
퍼니엑스이
2013.02.17 14:10
게시물 등록처럼 스팸필터를 적용하면 좋을 것 같네요. 10초에 1개씩 보내거나 스팸 단어도 차단할 수 있으니까 좋을 것 같아요.
-
XE러버
2013.02.17 22:24
저도 이 방법이 가장 적절하다고 생각합니다.
-
XE러버
2013.02.17 22:23
email이나 user_id는 회원의 아이디가 노출되기 때문에 개인정보유출 우려가 있습니다.
주요 검색엔진에서 id로 검색하면 개인정보(이름,연락처 등)이 쭈르륵 나옵니다.
닉네임제 기반인 XE 커뮤니티 사이트는 닉네임에 기반한 '익명성'에 기초하고 있는데
이렇게 되어버리면 큰 혼란이 생길 수도 있습니다.
-
Xiso
2013.02.17 23:15
xe측에서 반응이 있기를 기다려봐야겠네용;
-
Garon
2013.02.17 23:32
음... 다른 방법으로는 시간당 발송량에 제한을 두는 것은 어떨까요...
(단 이렇게 되면 챗팅이나 메시징 모듈의 필요성이 두각이 되긴 합니다만...) -
jahong
2013.06.27 01:42
걍 쪽지 개인당 하루 1개씩만 보내게 하는게 낫겠습미다. 문자서비스처럼 한달 백건만 주던가요. -
혼ME
2013.06.27 19:44
아이디나 다른걸 참조하는건 윗분 말씀대로 정보유출의 가능성이 있기에
참조한 srl값이 회원정보값이 아닐시 보내는이의 쪽지발송에 제약을 거는 방법도 괜찮을꺼 같습니다.
동의합니다.
member_srl보다는 user_id 도좋고 email_address도 좋다고 봅니다.