유용한 팁 공유 게시판
팁공유라고 해서 아주 특별하거나 기발한거 아니어도 됩니다.
자신이 제로보드를 사용하면서 생긴 자신만의 노하우나 아주 사소한 팁이어도 좋습니다.
자신에겐 아무것도 아니더라도 다른분들께는 분명 중요하고 소중한 팁이 될수 있을겁니다.
이메일 인증을 도입 하려고 하는데, 여기 팁란에서 찾아 보니까 복잡한것 밖에 없더군요. 나름대로 간단하고 보안상 괜찮다고 생각하는 방법을 올려 보겠습니다.
일단 제 방법은 회원 가입 후 이메일 인증을 하는 방법이 아니라 회원 가입화면에서 이메일 인증을 하는 법입니다. 회원 가입 후 이메일 인증을 하는건 여러가지 손 쓸 부분이 많은데다 가입 후 이메일 인증을 하지 않는 회원들을 또 짤라 줘야 하거든요. 자동으로 짜르는 소스를 만든다고 해도 여러가지로 복잡 해 집니다.
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 에서 해결하는게 회원입장, 관리자입장에서도 더 편하겠죠.
일단 저도 구상만 해 두고 있는 부분이고, 지금부터 만들 생각입니다. 팁 아니라고 욕하시는 분들께 말씀 드리자면 이것도 "팁" 입니다. 꼭 처음부터 끝까지 이렇게 저렇게 해라는 상세한 방법을 적어 둔것만 팁은 아니라고 생각합니다.
혹시 보안에 문제가 있는 부분이 있다고 생각 하시는 분이 있으시거나, 태클 거실분, 질문 하실분, 추가 팁 서술 해 주실분은 댓글 남겨 주시기 바랍니다.
메일 인증 문제점이 hanmail,daum, google,gmail,gmail.co.kr empal이랑 empas랑 같기 때문에 또 받을 수 있기 때문에 문제점이 있죠.
같은 회사인데 도메인이 여러개라서 이걸 다 등록하려면 str_replace로 다 등록해줘야하는데.ㅜㅜ;
?? 이해가 되지 않네요. 왜 이렇게 복잡하게 만드나요?
그냥 입력한 이메일로 인증키 보내고 (인증키는 임의 문자열)그 인증키 입력하게 해서 인증키 맞으면 통과, 아니면 다시 이메일로 받아보게 그냥 하면 되지않나요.
말씀 하신 나머지 부분, 인증키가 맞으면 통과시키고 아니면 다시 인증키를 받게 하거나 다른 이메일로 받도록 하는건 제 방식에서도 당연히 사용 하고 있구요, 이 부분도 최대한 간단하게 만들 수 있도록 개요를 제시 해 드린겁니다.



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