개인 블로그 같은 걸 만드는 중입니다.
발행한 게시물에 대한 수정 삭제 권한을 갖는 admin 유저 1명만 생성하여 관리하려는데, 구현을 하다보니 의문이 들어서 문의드립니다.
유저 한 명을 등록하려고 DB를 쓰는 게 의미가 있나 싶어서
.env 파일에 ADMIN_ID = '아이디', ADMIN_PW = '비번' 이렇게 만들어두고
서버단(api)에서 프론트에서 보낸 id, pw에 대해 id === process.env.ADMIN_ID, pw === process.env.ADMIN_PW 을 확인하고 JWT 발행하여 admin페이지 접근을 제한했습니다.
우선, db를 쓰지 않고 이런 방식으로 로그인 처리를 해도 문제가 없는지 궁금합니다.
추가로 SQL injection 같은 게 가능한지 테스트하려고
id에 1==1||'1' 이런 걸 넣어서 로그인 시도를 해보니 id === process.env.ADMIN_ID 이 부분이 false로 뜨면서 로그인이 안 되는데,
1==1||'1' == process.env.ADMIN_ID 이걸 콘솔 찍어보니 또 true로 나옵니다.
// pages/api/siginin.ts
let { id, pw } = JSON.parse(req.body);
console.log(id == process.env.ADMIN_ID) // id에 1==1||'1' 보내면 false
console.log(1==1||'1' == process.env.ADMIN_ID) // true
if (id === process.env.ADMIN_ID) {
if (pw === process.env.ADMIN_PW) {
...JWT 발행
}
}
위 두 개가 왜 다른 결과가 나오는지 궁금합니다.