제로보드4는 공식적으로 더 이상 개발되지도 배포되지도 않습니다.
제로보드4를 사용하기 위한 팁보다 제로보드4를 안전하고 무사히 다른 툴로 이전하는 팁들을 게재해주시면 감사하겠습니다.
시간이 오래 지난 만큼 오래된 프로그램은 보안 및 사용성에 있어 문제가 많으니 이해 바랍니다.

간단한 이메일 인증법 (개요)

조회 수 11701 추천 수 0 2008.02.23 19:02:49
이메일 *.120.240.189

이메일 인증을 도입 하려고 하는데, 여기 팁란에서 찾아 보니까 복잡한것 밖에 없더군요. 나름대로 간단하고 보안상 괜찮다고 생각하는 방법을 올려 보겠습니다.

일단 제 방법은 회원 가입 후 이메일 인증을 하는 방법이 아니라 회원 가입화면에서 이메일 인증을 하는 법입니다. 회원 가입 후 이메일 인증을 하는건 여러가지 손 쓸 부분이 많은데다 가입 후 이메일 인증을 하지 않는 회원들을 또 짤라 줘야 하거든요. 자동으로 짜르는 소스를 만든다고 해도 여러가지로 복잡 해 집니다.

1. member_join.php 이메일 입력란 아래에 이메일 인증 코드를 받을 input을 하나 추가해 둡니다.
2. "이메일 인증" 이라는 버튼을 만들어 두고, " email_check.php?email=이메일" 로 연결 시킵니다.
3. 이메일 email_check.php 가 새창으로 뜨도록 하던가, 아님 제가 추천하는 방법은 페이지 구석에 안보이는 아이프레임을 만들어 두고 그쪽으로 타겟을 잡습니다. 그럼 페이지 리플레쉬 없이 사용 가능 합니다.
4. email_check.php 에선 받은 이메일을 가지고 이리저리 볶아 코드를 만들어 냅니다. 가장 쉬운 방법은 md5나 crypt함수를 이용해서 암호화 하는 방법과 substr 등으로 길이를 맞추는 방법입니다.
  4-1
abc@abc.com 을 substr등의 함수로 적당한 부분을 잘라서 암호화 한다.
  4-2
abc@abc.com 을 암호화 한 뒤 적당한 부분을 자른다.
  4-3 두 방법을 다 동원하여 적당히 잘라 암호화 한 키를 또 적당히 자른다.
  4-4 덤으로 혹시 패턴을 유추하는 대단한 인간을 위해서
abc@abc.com 에 임의의 문자를 더해서 암호화한다. 예)hi_abc@abc.com_hello
5. email_check.php 에서 코드를 만들었으면 그걸 해당 이메일로 발송합니다.


끝입니다. 저렇게 해 둔 뒤 member_join_ok.php에서 코드를 한번 더 만든 뒤에 입력된 코드와 일치하는지 확인 해 봅니다. 일치하지 않으면 "이메일 인증 코드와 이메일이 일치하지 않습니다" 라는 식으로 대충 말 꾸며서 오류 띄워주면 이메일 인증 코드를 받은 이메일로만 가입을 할 수 있죠.

member_join_ok.php 까지 거치기 싫다면 많은 사이트에서 우편번호를 입력받는 방식으로 이메일 입력란을 클릭하면 새창이 뜨도록 해서 거기서 인증을 마치면 member_join.php로 넘겨주되 readonly로 수정을 못하도록 막아 버리는겁니다.

보안이 걱정 되시면 email_check.php에

 if(!eregi($HTTP_HOST,$HTTP_REFERER)) echo"<script>alert('정상적인 접근이 아닙니다.')</script>";
 if(!eregi("member_join.php",$HTTP_REFERER)) echo"<script>alert('정상적인 접근이 아닙니다.')</script>";


정도 넣어 주면 제 머리로는 별다른 부정행위 방법을 찾아 낼 수가 없네요. 이렇게 만들어 두면 다른 방법에 비해 좋은점이

첫째로, 소스가 훨씬 간단합니다. 소스는 없이 말로만 설명 해 두니 복잡해 보일지라도 실제로 만들면 추가되는 파일 하나, 추가되는 소스 몇줄이면 될것으로 보입니다.
둘째로, 가끔 인증 코드가 발송되지 않는 이메일이 있는데, 이 팁은 발송되지 않으면 그자리에서 바로 다른 이메일로 바꿔서 인증을 받을 수 있습니다. 다른 이메일로 인증을 받는다고 해도 "재인증" 소스따위 추가하지 않아도 그냥 있는 소스 그대로 사용자가 클릭 한번만 더 하면 됩니다.
셋째로, 정보 수정 시에도 똑같은 소스를 조금만 바꿔서 member_modify.php에 적용시키면 됩니다. 이메일 바꿨다고 다시 레벨 다운시키고 그러는것 보다는 그냥 member_modify.php 에서 해결하는게 회원입장, 관리자입장에서도 더 편하겠죠.

일단 저도 구상만 해 두고 있는 부분이고, 지금부터 만들 생각입니다. 팁 아니라고 욕하시는 분들께 말씀 드리자면 이것도 "팁" 입니다. 꼭 처음부터 끝까지 이렇게 저렇게 해라는 상세한 방법을 적어 둔것만 팁은 아니라고 생각합니다.

혹시 보안에 문제가 있는 부분이 있다고 생각 하시는 분이 있으시거나, 태클 거실분, 질문 하실분, 추가 팁 서술 해 주실분은 댓글 남겨 주시기 바랍니다.


[레벨:6]CHOIS

2008.02.24 06:04:56
*.24.69.53

절실하게 필요성은 느껴지는데 ...
저한텐 너무 어렵게 다가오네요.  T.T

이메일

2008.02.24 11:58:43
*.120.240.234

저도 아직 제작 중이라 처음부터 하나하나 설명 드리긴 좀 그러니 만들다 안되는 부분 있으시면 질문 주세요.

오리

2008.02.24 14:31:14
*.50.173.31

메일 인증 문제점이 hanmail,daum, google,gmail,gmail.co.kr empal이랑 empas랑 같기 때문에 또 받을 수 있기 때문에 문제점이 있죠.
같은 회사인데 도메인이 여러개라서 이걸 다 등록하려면 str_replace로 다 등록해줘야하는데.ㅜㅜ;

이메일

2008.03.08 13:03:14
*.120.240.101

그건 이메일 인증시스템의 공통적인 문제점 같네요. str_replace를 해 주시던가 아니면 포털 사이트들 처럼 셀렉트 박스로 메일 도메인을 선택 하도록 해야 할듯..

neo

2008.04.13 15:14:23
*.254.227.67

?? 이해가 되지 않네요. 왜 이렇게 복잡하게 만드나요?

그냥 입력한 이메일로 인증키 보내고 (인증키는 임의 문자열)그 인증키 입력하게 해서 인증키 맞으면 통과, 아니면 다시 이메일로 받아보게 그냥 하면 되지않나요.

이메일

2008.05.05 01:02:07
*.218.131.195

neo 그 기능을 간단하게 만든게 위 팁입니다. 임의 문자열도 아무 규칙도 없이 생성 해 버리면 맞는지 아닌지 검사를 할 수 없게 되지요. 그래서 간단한 인증키를 만들 수 있는 방법으로 이메일을 암호화 하는 방법을 제시해 드렸구요, (이보다 더 간단한 방법이 있습니까?)

말씀 하신 나머지 부분, 인증키가 맞으면 통과시키고 아니면 다시 인증키를 받게 하거나 다른 이메일로 받도록 하는건 제 방식에서도 당연히 사용 하고 있구요, 이 부분도 최대한 간단하게 만들 수 있도록 개요를 제시 해 드린겁니다.

[레벨:3]ReloadMax

2008.08.24 14:24:31
*.196.133.230

그런 단점때문에 요즘은 이메일인증은 거의 사라지는 편이죠..
가입 대상의 전반적으로 사용할 수 있어야 효율성과 보안성을 함께 갖게되는데.. 이건뭐..
정확한 본인 확인 방식은 핸드폰 인증이 대부분인데.. 핸드폰 인증은... 돈이 문제죠ㄷㄷ..

OpenID가 이럴 때 필요하나..

미니커뮤니티

2009.02.12 01:21:57
*.128.210.7

if(!eregi($HTTP_HOST,$HTTP_REFERER)) echo"<script>alert('정상적인 접근이 아닙니다.')</script>";
if(!eregi("abc.php",$HTTP_REFERER)) echo"<script>alert('정상적인 접근이 아닙니다.')</script>";
if(getenv("REQUEST_METHOD") == 'GET') echo"<script>alert('정상적인 접근이 아닙니다.')</script>";
이런 것들은 보안에서 전혀 그 기능을 발휘하지 못합니다
그저 편의상 사용하는것을 권해 드립니다
타 사이트에서 폼페이지를 만들어 주소를
http://action.com/def.php?a=http://victim.com/abc.php (레퍼럴 조작)
이렇게 하고 메소드를 포스트로 날리면 위의 3가지 코드 모두 무력화 됩니다..
List of Articles
번호 제목 글쓴이 날짜 조회 수
4429 아싸대박!!! 파일업로더 입니다. imagefile [9] 이창욱 2008-04-11 14835
4428 글 등록,수정후 목록을 카테고리 구분없이 전체 리스트로 [3] [레벨:3]하날 2008-04-05 9675
4427 [1분 투자] 홈피를 들어갔을때 하트마우스로 바꿔보자 ^ㅡ^ [레벨:3]kmsang1493 2008-04-01 10380
4426 로그인이 안될때 [3] [레벨:1]김규태735 2008-04-01 11963
4425 최근덧글(코멘트) 출력하고 선택된 셀을 반전시키기 imagefile [4] [레벨:2]gegoori 2008-03-31 10827
4424 UTF-8에서 php.ini 수정 후 관리자 로그인 문제해결 [레벨:1]Taijisk 2008-03-25 10637
4423 제로보드에 레인에디터 설치하기 - 웹편집기 [3] 김종갑 2008-03-24 11782
4422 제로보드에 음성/화상 채팅 추가하기 image [3] [레벨:5]digirave 2008-03-09 11555
4421 카테고리 일괄 이동하기(동시에 여러 글 카테고리 변경하기). [7] [레벨:2]엘라이어 2008-03-08 11019
4420 ... 질문게시판에 올리던 노프레임 아웃로그인 관련, 해결했습니다~ [1] [레벨:2]fansasypia2 2008-02-26 10410
4419 특정회원의 아이디로 로그인해야할때 [3] [레벨:2]And310 2008-02-26 10331
» 간단한 이메일 인증법 (개요) [8] 이메일 2008-02-23 11701
4417 제로보드uft-8 현재접속자 스킨변경시 나오는 오류해결 [18] [레벨:2]코코로링 2008-02-18 12378
4416 스패머 가입자 막는방법 [19] [레벨:5]템플러 2008-02-17 13960
4415 특정게시판 파일업로드시 업로드되는 폴더위치 바꾸기 [3] [레벨:5]템플러 2008-02-17 9381
4414 줄바꿈이 ■ 다음과 같은 기호로 바뀌었을때.. file [3] 쮸니 2008-02-16 8940
4413 백업복구 후 신규가입자의 포인트가 올라가지 않는 버그.. [1] [레벨:1]Centell 2008-02-09 12876
4412 사진전용 게시판 리스트에 촬영날짜 보여주기.. imagefile [레벨:2]pixyman.com 2008-01-30 8856
4411 스패머 쩐 가입자 가입못하게... [22] [레벨:3]하날 2008-01-28 8758
4410 제로보드 연동 채팅방 imagefile [8] [레벨:1]넓은세상 2008-01-17 10857