Bcryptを使用して[node.js]Type scriptでパスワードを暗号化
5956 ワード
緒論
この記事では、タイプスクリプト環境でパスワード暗号化を行う方法について説明します.
次に、ログイン時にユーザーが入力したパスワードがデータベースに格納されている暗号化パスワードと一致するかどうかを説明します.
ここです。を参照すると、javascriptベースのBcryptの使用方法がより良いです.
モジュールのインストール
npm install @types/bcrypt --save
JavaScriptとは異なり、タイプスクリプトには@types/bcryptをインストールする必要があります.使用方法
インストールされたモジュールを使用するには、
import bcrypt from "bcrypt";
を上部に宣言します.会員加入を例に、使い方を見てみましょう.
入力したパスワードを暗号化するには、
genSalt()
、hash()
の方法を使用します.たとえば、入力されたパスワードは
1q2w3e4r
です.const saltRound = 10; // 사용자 요구사항에 맞게 값 정의 가능
const salt = await bcrypt.genSalt(saltRound); // salt 생성
const hashedPW = await bcrypt.hash("1q2w3e4r", salt); // 암호화된 비밀번호 생성
// 실제로는 아래 코드처럼 사용자가 입력한 값을 이용해서 암호화 비밀번호를 생성
// const hashedPW = await bcrypt.hash(req.body.password, salt);
これでコードを書くことができます.実際にconsole.log(hashedPW)
を試してみます2b$10qXFmxZ4fXsk7Pv4sBz9Ri.dsIy611UxOGcj6xYUu5UTBAGghxEsJi
この形式の暗号化文字列を結果として得ることができる.
このように暗号化されたパスワードをデータベースに保存すると、管理者もユーザーのパスワードが何なのか分かりません.
暗号化技術を使用しないと、セキュリティが非常に脆弱になる可能性があります.そのため、ユーザー情報をデータベースに格納する場合は、暗号化技術を使用する必要があります.
比較パスワードでログインする方法
ログイン時には、ユーザが入力した
원래 비밀번호
と、データベースに格納されている암호화된 비밀번호
とを比較する.筆者は,登録に必要な情報を
email
,password
と仮定し,パスワード比較ロジックを記述する.const {email, password} = req.body; // req.body로 받은 변수
// 먼저 데이터베이스에서 입력받은 이메일이 존재하는지 확인하여 있다면 데이터를 가져옴
const user = await User.find({
email: email
});
// 가져온 데이터의 암호화된 비밀번호와 사용자가 입력한 비밀번호를 비교한다.
const check = await bcrypt.compare(password, user[0].password);
if(check) {
// 입력한 비밀번호가 일치하는 경우 로직
console.log("유효한 회원");
}
else {
// 입력한 비밀번호가 일치하지 않는 경우 로직
console.log("유효하지 않은 회원");
}
構成ロジックの場合、上記bcryptが提供するcompare()
の方法を用いて構成することができる.まず,筆者はユーザという表で電子メールを入力するユーザが存在するかどうかを確認し,そのユーザの情報を
user
変数に含めた.console.log(user)
の結果は次のとおりです.[
User {
id: 1,
email: '[email protected]',
password: '$2b$10$qXFmxZ4fXsk7Pv4sBz9Ri.dsIy611UxOGcj6xYUu5UTBAGghxEsJi',
}
]
上記の結果が得られた.したがって、
user[0].password
でデータベースに格納された暗号化パスワードを使用することにした.現在,
compare()
手法を用いて入力されたパスワード,暗号化されたパスワードを比較している.2つのパスワードが一致する場合、
check
変数はtrueを返します.ソース
Reference
この問題について(Bcryptを使用して[node.js]Type scriptでパスワードを暗号化), 我々は、より多くの情報をここで見つけました https://velog.io/@limsw/node.js-Typescript에서-Bcrypt를-이용한-비밀번호-암호화テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol