제로보드4는 공식적으로 더 이상 개발되지도 배포되지도 않습니다.
제로보드4를 사용하기 위한 팁보다 제로보드4를 안전하고 무사히 다른 툴로 이전하는 팁들을 게재해주시면 감사하겠습니다.
시간이 오래 지난 만큼 오래된 프로그램은 보안 및 사용성에 있어 문제가 많으니 이해 바랍니다.
이메일 인증을 도입 하려고 하는데, 여기 팁란에서 찾아 보니까 복잡한것 밖에 없더군요. 나름대로 간단하고 보안상 괜찮다고 생각하는 방법을 올려 보겠습니다.
일단 제 방법은 회원 가입 후 이메일 인증을 하는 방법이 아니라 회원 가입화면에서 이메일 인증을 하는 법입니다. 회원 가입 후 이메일 인증을 하는건 여러가지 손 쓸 부분이 많은데다 가입 후 이메일 인증을 하지 않는 회원들을 또 짤라 줘야 하거든요. 자동으로 짜르는 소스를 만든다고 해도 여러가지로 복잡 해 집니다.
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 에서 해결하는게 회원입장, 관리자입장에서도 더 편하겠죠.
일단 저도 구상만 해 두고 있는 부분이고, 지금부터 만들 생각입니다. 팁 아니라고 욕하시는 분들께 말씀 드리자면 이것도 "팁" 입니다. 꼭 처음부터 끝까지 이렇게 저렇게 해라는 상세한 방법을 적어 둔것만 팁은 아니라고 생각합니다.
혹시 보안에 문제가 있는 부분이 있다고 생각 하시는 분이 있으시거나, 태클 거실분, 질문 하실분, 추가 팁 서술 해 주실분은 댓글 남겨 주시기 바랍니다.
미니커뮤니티
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가지 코드 모두 무력화 됩니다..

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