비밀번호를 저장하는데 여러 가지 방법이 있더군요.
그 중에 php의 sha1() 함수를 써보았습니다.
우선은 회원가입 시 sha1() 함수로 비밀번호를 DB에 저장합니다.
POST 방식으로 아이디와 비밀번호가 넘어왔다면, $passwd 변수에 sha1() 함수의 리턴값을 대입해서 암호화합니다.
이 때 중요한 것이 DB의 passwd 자릿수입니다.
varchar(41) 로 잡아줍니다. <- 요게 정확한 건지 아직 확인필요!
그 다음엔 로그인 시에 저장된 비밀번호와 입력한 비밀번호를 비교합니다.
sha1() 함수는 단방향이기 때문에 암호화 할 뿐 복호화 하지 않습니다.
그래서, 로그인 시에 입력한 비밀번호를 다시 암호화 해서 저장된 값과 비교를 해줍니다.
간단하게 말해 위와 같은 식으로 처리합니다.
그 밖에도 sql의 password() 함수를 통해 저장하는 방법도 있던데, 아마 루틴은 거의 동일할 겁니다.
sha1()으로 암호화 해서 저장하게 되면 DB에는 011c945f30ce2cbafc452f39840f025693339c42 이런 식으로 들어가 있습니다.
아무래도 텍스트 그대로 노출되어 있다면 관리자가 다 볼 수도 있고...안전을 위해 암호화해서 저장해야겠죠.
그 중에 php의 sha1() 함수를 써보았습니다.
우선은 회원가입 시 sha1() 함수로 비밀번호를 DB에 저장합니다.
POST 방식으로 아이디와 비밀번호가 넘어왔다면, $passwd 변수에 sha1() 함수의 리턴값을 대입해서 암호화합니다.
$id = $_POST['id']; $passwd = sha1($_POST['passwd']); mysql_query("INSERT INTO member (id, passwd) VALUES('$id', '$passwd')"); <br />
이 때 중요한 것이 DB의 passwd 자릿수입니다.
varchar(41) 로 잡아줍니다. <- 요게 정확한 건지 아직 확인필요!
그 다음엔 로그인 시에 저장된 비밀번호와 입력한 비밀번호를 비교합니다.
sha1() 함수는 단방향이기 때문에 암호화 할 뿐 복호화 하지 않습니다.
그래서, 로그인 시에 입력한 비밀번호를 다시 암호화 해서 저장된 값과 비교를 해줍니다.
$id = $_POST['id']; $passwd = sha1($_POST['passwd']); $result = mysql_query("SELECT * FROM member WHERE id='$id'"); $rows = mysql_fetch_array($result); if(!$result) { echo "해당 ID가 없습니다."; } elseif($rows['passwd'] != $passwd) { echo "비밀번호가 틀립니다."; }
간단하게 말해 위와 같은 식으로 처리합니다.
그 밖에도 sql의 password() 함수를 통해 저장하는 방법도 있던데, 아마 루틴은 거의 동일할 겁니다.
sha1()으로 암호화 해서 저장하게 되면 DB에는 011c945f30ce2cbafc452f39840f025693339c42 이런 식으로 들어가 있습니다.
아무래도 텍스트 그대로 노출되어 있다면 관리자가 다 볼 수도 있고...안전을 위해 암호화해서 저장해야겠죠.
'PHP' 카테고리의 다른 글
서버의 현재 디렉토리명을 반환하는 함수 (0) | 2009.11.10 |
---|---|
mysql improved 함수 사용하기 (0) | 2009.02.16 |
PHP 막대그래프 그리기 (2) | 2009.01.26 |
PHP 코딩 시 유의사항 (0) | 2009.01.15 |
거래명세서/세금계산서 출력용 PHP 라이브러리 (0) | 2009.01.07 |