포럼



 

안녕하세요.

프로그래밍에 대해서 전혀 모르는,

그러나 웹사이트를 직접 만들어보고 싶어서 초보용 PHP 책을 보기 시작한지 1 주일 정도 되는,

 

쌩초보입니다. ^^;;

 

xe를 사용하지 않고 순수 날코딩으로 웹사이트를 만들고 싶어서

책보고 하나하나 따라하고 있어요.

 

어제 오늘 2 일 동안 회원가입, 로그인, 로그아웃 기능을 구현하다가

xe로 운영하던 사이트의 회원 DB 를 새로운 테이블로 옮기고,

로그인 기능을 구현하다가 비밀번호 체크하는 곳에서,

책에 있는대로 따라했는데, 자꾸 에러가 나길래,

웹서핑을 몇 시간 동안 하다가,

 

책에는 sha 로 되어 있어서 그렇게 코딩했는데,

xe는 md5로 되어 있어서 에러났던걸로 확인했구요.

 

sha와 md5 에 대해 이곳에서 오고간 토론글들도 봤어요.

 

전 앞으로 sha로 할 건데,

이미 제 사이트에 가입되어 있는 1 만명 정도의 회원들의 md5 정보들을 어찌할까 고민하다가

 

아래와 같이 코딩했습니다.

 

 

=========================================================================================

  $sql1="select * from 회원정보 테이블 where mem_id='$mem_id' and mem_pwd=sha('$mem_pwd')";
  $sql2="select * from 회원정보 테이블 where mem_id='$mem_id' and mem_pwd=md5('$mem_pwd')";
  $result1=mysql_query($sql1,$connect);
  $result2=mysql_query($sql2,$connect);
  $num_rows1=mysql_num_rows($result1);
  $num_rows2=mysql_num_rows($result2);
 
  if(!$num_rows1&&!$num_rows2) {
    echo("
      <script>
        window.alert('로그인 정보가 정확하지 않습니다.');
        history.go(-1);
      </script>
    ");  
  } else {
     
      if($num_rows1) { $row=mysql_fetch_array($result1); }
      else { $row=mysql_fetch_array($result2); }
     
     
     
      $_SESSION['s_srl']=$row[mem_srl];
      $_SESSION['s_id']=$row[mem_id];
      $_SESSION['s_nick']=$row[mem_nick];   
     
      echo("
        <script>
          history.go(-2);
        </script>
      ");             

 

=============================================================================================

 

 

전 초보용 책 본지 1 주일 밖에 안된 생초보라서 앞의 분들의 복잡한 이야기는 잘 모르겠지만,

 

xe core 에서 md5에서 sha 로 전환하는데 어려운 큰 이유가 기존 회원의 md5 정보를 sha 정보로 전환하기 힘든 점

 

 

이라는 것 같은데,

 

위와 같이 코딩을 하면 굳이 기존의 md5 를 sha 정보로 변경안해도 되고,

 

 

또 중요한 이슈 중에 하나가 xe 가 어차피 오픈소스이기 때문에 어떤 방식으로 암호화를 하는지가 다 노출되어 있어서

md5로 하나 sha로 하나 의미없다는 것 같던데요. (사실 이게 가장 큰 핵심인 것 같던데)

 

위 if 문에 md5, sha, 기타 등등(몇 가지 더 있는 것 같던데)을 현존하는 암호화 방식을 다 추가하고,

 

회원가입이나 회원정보수정 시에 사이트 관리자가 직접 고른 방식으로 암호화하게 하면,

 

아무리 오픈소스일지라도 어떤 암호화 방법을 쓰고 있는지 그대로 노출되지는 않을 것 같습니다.

 

"xe core 가 A 방식을 썼으니 A 로 무한 루프 돌리면 되겠군"

이러하기 때문에 어떤 방식을 써도 결국 똑같다는 논지는 초보인 제가 보기엔 좀 이상합니다.

 

어떤 방식을 쓸것인지 사이트 관리자가 직접 선택하게 만들면,

결국 어떤 방식을 사용했는지 모르게 될테니까요.

 

로그인할 때, 모든 방식으로 비교해서 하나라도 맞으면 로그인 성공인 것으로 코딩해버리고,

사이트 운영자가 고르는 방식으로 암호화하게끔만 하면,

 

해커 입장에서 모든 방식으로 다 시도를 해봐야 되니,

 

"오픈소스이기 때문에 암호화 방식이 무엇인지 노출되는 일" 은 해결되는 것 아닐까요?

 

xe core에서 비밀번호 입력받는 부분에 if 문 해결하는걸로 깔끔히 해결될 것 같아서요.

 

 

 

xe core 개발자가 "어떤 방식을 쓸 것이냐" 고민하지 않고,

어떤 방식을 쓰더라도 (게다가 수시로 이리저리 방식을 변경하더라도)

로그인 기능이 제대로 수행되게끔만 만들어두어서

"어떤 방식을 쓸 것이냐" 를 xe 유저가 직접 고르게끔 하면 말끔히 해결될 것 같습니다.

 

 

게다가 사이트 관리자가 수시로 방식을 바꿔가면서 2~3 가지를 돌아가면서 사용하면,

그 사이트는 여러 가지 방법이 모두 섞여 있으니, 무한루프를 좀 더 고생스럽게 한다는 효과도 있을 수도 있겠구요.

 

 

 

 

 

 

오늘 하루종일 로그인 에러 때문에 끙끙거리다가 드디어 해결해서 기분좋게 잠자러 가던 중에 짧은 생각 남겨봅니다.

 제 말이 너무 말도 안되는 초보스러운 글이라도 양해바랍니다.

 진짜 쌩초보거든요. ^^;;

 

 

 

 

그럼, 굿나잇!! ^^

글쓴이 제목 최종 글
푸시아 XpressEngine SI 협동조합? [8] 2013.11.16 by 銀童
푸시아 github 에서 내 저장소에 남의 repo 를 fork 해서 [4] 2013.11.16 by 푸시아
도라미 XDT EX가 다올 CMS으로 바뀝니다. [10] 2020.03.14 by 푸시아
큰호수 [버그?] Version.1.7.3.6 권한관리 - 서버에 요청중입니다. [4] 2020.03.14 by primesoup
씨엠에스개발자 php 를 모르는 개발자로서 볼때.. 소감 [8] 2013.11.16 by 정도의길을걷기싫다
socialskyo XE RSS 주소로는 구글 사이트맵에 제출시 색인 생성이 잘 안되나 봅니다.  
푸시아 깃헙을 해보고 있는데 궁금한게 있어요. [2] 2013.11.16 by 푸시아
sejin7940 BNU님, 아직 기존에 등록된 Core 이슈가 구글->github 로 안 넘어온거죠? [2] 2020.03.14 by BNU
sejin7940 @BNU 사이트맵의 권한 설정쪽 패치 에 버그가 하나 더 있어 보완부탁드립니다.  
BonaSera 유챗 채팅방 쓰시는 분들 계신가요? [5] 2013.11.15 by CI
푸시아 WP가 국내에서 XE점유율을 넘어섰다고 하는데 [11] 2013.11.15 by CI
비밀임다 쌩초보의 md5와 sha에 대한 짧은 생각 [14] 2014.07.16 by 비밀임다
큰성565 xe recruitment 개발자님 이 글을 읽어 주셨으면 좋겠습니다 [7] 2013.11.14 by 라돌체
XE만세 첨부파일이 어느 순간부터 100%에서 증발합니다. [5] 2013.11.14 by 배워서남준다
최윤한 cpu 점유율 관련되서 여쭤봅니다. [2] 2013.11.14 by 최윤한
꿈틀잉 개인서버 1대로 돌리시는분들... [22] 2013.11.14 by 최윤한
청의필구 다양한 CMS의 종류들~ [3] 2013.11.14 by 푸시아
고수군 문서를 브라우저 2개로 동시에 열어서 수정하면 .. 오류? [1] 2013.11.14 by Cody
socialskyo XESCHOOL.COM 말이에요.. [5] 2013.11.14 by 푸시아
Canto 실시간 글 알림 애드온 커넥션 테스트를 해봤습니다. [7] 2013.11.14 by KS