2016-11-10

Sails.js Tutorial : 비밀번호 단방향암호화(SHA256) 하기


  • 정보통신망법, 개인정보보호법 등에 의하면 비밀번호는 단방향암호화(SHA256 등), 개인정보는 양방향암호화(AES256 등)를 하도록 되어 있습니다. 지금까지 작성한 예제는 이런 법에 맞지 않아서 서비스할 수 없겠네요. 여기에서는 비밀번호의 단방향 암호화를 구현해보도록 하겠습니다.
  • 먼저, xyz/config/bootstrap.js 파일을 아래처럼 수정합니다.
    module.exports.bootstrap = function(cb) {
     
      // It's very important to trigger this callback method when you are finished
      // with the bootstrap!  (otherwise your server will never lift, since it's waiting on the bootstrap)
      cb();
    };
  • xyz/app/Model/Admin.js 에 crypto 모듈을 추가하고, setPassword 함수를 추가합니다.
    ...
     
    const crypto = require('crypto')
     
    ...
     
      beforeCreate: function (values, cb) {
        values.password = crypto.createHash('sha256').update(values.password).digest('base64');
        console.log(values); // 관리자 추가시 비밀번호 sha256 확인용
        cb();
      },
     
      beforeUpdate: function (values, cb) {
        values.password = crypto.createHash('sha256').update(values.password).digest('base64');
        console.log(values); // 비밀번호 변경시 sha256 확인용
        cb();
      },
     
    ...
  • 이제, 관리자를 추가해보고, DB에서 비밀번호가 어떻게 들어가 있는지 확인해봅니다.
    ...
     
    { userid: 'user1',
      password: 'a1HUMd9dfxQcvs7M957fPdhhw7QGnwsRZho+76y7qRg=',
      nick: '이순신' }
    { password: 'huUBSWWGYTEqngs1VY2E9sbT2nl/VSqWV/4FWMpAze8=' }
    [ { userid: 'user1',
        password: 'huUBSWWGYTEqngs1VY2E9sbT2nl/VSqWV/4FWMpAze8=',
        nick: '이순신',
        createdAt: '2016-11-09T06:48:18.710Z',
        updatedAt: '2016-11-09T06:48:42.896Z',
        id: 193 } ]
     
    ...
    비밀번호가 사람이 알아볼 수 없는 형태로 되어 있지요? 그러면 잘 된 것입니다. *^^*

댓글 없음:

댓글 쓰기