js 파일에서 로그인 정보가 있는 파일에 salt를 선언하고 아무런 값들을 넣는다.
salt
를 가지고 있을 때, md5
로 암호화하기 )var salt = '@##!#ajdksa443534';
salt 를 선언하고,
cmd 창을 통해서 node 를 실행한다.
md5
와 salt
그리고 pwd
를 정의하고, salt
와 pwd
를 합친 값을 md5
를 통해서 암호화한다.
> var md5 = require('md5');
undefined
> var salt = '@##!#ajdksa443534';
undefined
> var pwd = '111';
undefined
> md5(salt+pwd);
'49fe39cb993d956e412f0701cee43401'
이렇게 두 변수를 더해서 암호화한 것을 tracker 사이트에 쳐보면, 제대로 복호화를 하지 못한다.
썜통이다~
왜냐하면, salt 값으로 더해진 값을 복호화하는 것은 굉장히 어렵기 때문이다.
하지만, 모든 사용자에게 동일한 salt
값을 pwd
에 더해서 사용한다면, 한 사용자의 비밀번호가 노출되면 다른 사용자들의 암호의 보안 역시 문제가 생긴다.
이 때문에, 각 사용자마다 salt 값을 다르게 둬서 암호화를 하는 것이 좋다.
이렇게 되면 만약, 동일한 비밀번호를 설정한 두 사용자의 같은 비밀번호를 저마다 다른 salt
를 통해서, 다르게 설정할 수 있다. 최종적인 hash 코드가 달라지게 된다.
salt
를 정의한 md5
암호화 모듈)app.post('/auth/login', function(req, res) {
var users = [
{
username: 'Juni_K',
salt: '138989&&^&%^%$JKSJK',
password: 'e8530b0e97642f0601a6acdb5d501b99',
displayName: 'JHK'
},
{
username: 'K8805',
salt: 'dsadzc@@*888(*(*sad))',
password: 'c8b1aca598a7b2628b67131c5a8a4922',
displayName: 'K5'
}
];
var uname = req.body.username;
var pwd = req.body.password;
for (var i = 0; i < users.length; i++) {
var user = users[i];
if (uname === user.username && md5(user.salt+pwd) === user.password) {
req.session.displayName = user.displayName;
return req.session.save(function() {
res.redirect('/welcome');
});
}
}
res.send('Who are you? <a href="/auth/login">login</a>');
});
users
라는 배열에 여러 개의 사용자 데이터를 넣는다.