CI 묻고 답하기

제목 DB 암호화 저장(OLD_PASSWORD)
글쓴이 리퍼스 작성시각 2015/08/26 13:57:09
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 16117   RSS
안녕하세요.
이번 모임에 참여해서 새로운걸 알고 배웠습니다.
도움주셔서 감사합니다.

회사 업무게시판을 코드이그나이터로 재개발을하고 있는데요. 기존에 DB를 그대로 사용하려다 보니 잘잘한 문제들이 발생합니다.

회원의 비밀번호를 저장한는데요. 기본에 DB가 OLD_PASSWORD형식으로 저장되어 있습니다.
코드이그나이터에서 MD5의 경우 그대로 사용했었는데요.
$this -> db -> where('user_pw',  MD5($user_pw))

OLD_PASSWORD도 똑같이 하면 될꺼라 생각했는데 OLD_PASSWORD에서 정의되지않은 함수 오류가 나와 버리네요...
$this -> db -> where('user_pw',  OLD_PASSWORD($user_pw))

MySQL에서 직접 OLD_PASSWORD('  ')로 쿼리를 날리면 정상적인 값이 나오는데,  이걸 코드이그나이터에서 직접 쿼리를 날리면 문제없이 정상적인 값이 나오는건 알겠는데요.

$SQL = "select idx, user_id, user_pw from member where user_id='$user_id' and user_pw=OLD_PASSWORD('$user_pw') limit 1";
$query = $this -> db -> query($SQL);

직접 쿼리를 날리는 방법말고 MD5처럼 OLD_PASSWORD를 처리할만한 방법이 어떤게 있을까요?

 
 다음글 config->constants 질문 (7)
 이전글 새로고침없이 {yield} 부분만 변경할 수 있을까요? (3)

댓글

한대승(불의회상) / 2015/08/26 14:17:12 / 추천 0
mysql old_password는 mysql 에서만 사용하므로 사용자 함수를 만드는 방법밖에는 없습니다.
mysql의 old_password 나 password 함수를 사용하여 사용자 암호를 암호화 하는것은 비추천 입니다.
mysql의 보안 정책에 의해 해쉬 방법이 바뀔수 있는데 복호화 할 수 없는 암호화 방법이 바뀐다는건 큰 문제가 될 수 있습니다.

php나 CI에서 제공하는 암호화 모듈을 사용하여 암호화 하길 권장 합니다.
리퍼스 / 2015/08/26 15:49:43 / 추천 0
답변감사합니다. 문제가 될수 있는내용은 알고 있으나 많은 회원의 비밀번호를 일괄적으로 변경하는 방법이 있는지 모르겠으나, 그렇지 않다면 회원들이 일일히 비번을 변경요청을 드려야하는 문제가 있습니다. 회원들이 먼가 변경하는 과정을 너무 번거로워하여 부득이하게 old_password 암호화 방법을 그대로 사용할수밖에 없어 문의 드렸습니다. CI에서는 지원하는 부분이 없군요.. 다른방법을 연구해봐야겠습니다.
감사합니다.