1. bcrypt
bcrypt๋ ํ๋ฒ ํด์ฑํ๋ฉด ๋๋๋ฆด ์ ์๋ ๋จ๋ฐฉํฅ ํด์ฑ์ด๋ค.
์ํธํ ๊ธฐ๋ฒ์ธ salt์ ํค ์คํธ๋ ์นญ์ ํตํด ๊ธฐ์กด ๋ณด์ ๋ฐฉ์๋ณด๋ค ์์ ํ๋ค.
1.1 salt?
๋น๋ฐ๋ฒํธ์ ์ถ๊ฐ ๋ฌธ์์ด์ ๋ถ์ฌ ์ํธํ ํ๋ ๊ฒ์ด๋ค.
๋น๋ฐ๋ฒํธ๋ง๋ค ๋ค๋ฅธ ๋ฌธ์์ด์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋ณด์์ฑ์ด ๋์์ง๋ค.
salt์ ๋ณด๋ ๋งค์ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ ์ ๋ณด๊ดํด์ผ ํ๋ค.
1.2 ํค ์คํธ๋ ์นญ?
ํค๋ฅผ ๋๋ฆฐ๋ค๋๊ฑด ๊ธธ์ด๋ฅผ ๋๋ฆฌ๋๊ฒ ์๋๋ผ ํด์ํจ์๋ฅผ ๋ฐ๋ณตํด ์ถ๋ ฅ ๊ฐ์ด ์์ฃผ ๋๋ฆฌ๊ฒ ์ฐ์ถ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ํดํน์ ํ๋๋ฐ ์๊ฐ๊ณผ ๋น์ฉ์ด ์ฆ๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณตํ ์๋ฅผ ๋๋ฆด์๋ก ๋ณด์์ด ๊ฐํ๋๋ค.
2. bcrypt๋ฅผ ํตํ ๋น๋ฐ๋ฒํธ ํด์ฑ, ๋น๊ต
์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
bcrypt.hash(myPlaintextPassword, saltRounds)
์ฌ์ฉ๋ฒ์ ๋ค์ํ์ง๋ง, scheme.pre()๋ฉ์๋๋ฅผ ์ด์ฉํด ์ ์ฅ๋๊ธฐ ์ ์ ์๋์ ์ผ๋ก ํด์ฑ๋๊ฒ ํ๋ฉด ํ๋ค.
userScheme.pre("save", async function () {
this.password = await bcrypt.hash(this.password, 5);
});
bycrypt.compare(mainPlainTextPassword, hash)
compareํจ์๋ true/false๋ฅผ returnํ๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ์๋ฅผ ๋ง๋ค๊ณ ์ด์ฉํ๋ฉด ํธํ๋ค.
const ok = bcrypt.compare(password, user.password);
์ฐธ๊ณ ์๋ฃ:
๋ ธ๋ง๋์ฝ๋ ์ ํ๋ธํด๋ก ์ฝ๋ฉ
https://velog.io/@sangmin7648/Bcrypt%EB%9E%80
https://www.npmjs.com/package/bcrypt
'๐งฑ Framework > Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[nodeJS] ๊นํ๋ธ ๋ก๊ทธ์ธ ๊ตฌํํ๊ธฐ (0) | 2023.02.08 |
---|---|
์ฟ ํค์ ์ธ์ ์ด๋? ๋ชจ๋ ์ฟ ํค ํ์ฉ์ ์ค์ฒด (0) | 2023.02.04 |
[nodeJS] res. render์ redirect ์ฐจ์ด (0) | 2023.02.02 |
mongoose? (0) | 2023.02.02 |
์๋์ฐ์์ ๊ฐ๋จํ๊ฒ mongoDB ์ค์นํ๊ธฐ (0) | 2023.01.27 |