VCA

AI로 로그인 시스템 만들기

회원가입·로그인·로그아웃과 '누가 무엇을 볼 수 있는가'까지 AI로 안전하게. 초보자가 빠지는 보안 함정도.

게시일 수정일 검토일 약 2분 분량편집 방침#실전 가이드#로그인#보안
학습 경로CRM 경로

한 문장으로

로그인 = '당신이 누구인가(인증)' + '무엇을 해도 되는가(인가)'. 보안 규칙을 분명히 말해야 AI가 구멍 난 코드를 주지 않는다.

만들 결과물

회원가입·로그인·로그아웃이 되고 역할로 권한을 나눌 수 있는 시제품. 그리고 빼면 안 되는 보안 규칙을 알게 된다.

먼저: 로그인은 사실 두 가지다

많은 사람이 '로그인'을 그냥 아이디와 비밀번호 입력으로 생각합니다. 사실은 두 가지 일입니다. **인증(당신이 누구인가)**과 인가(무엇을 해도 되는가). 인증에 성공하면 시스템은 보이지 않는 '통행증'을 줍니다. 이후 요청마다 그것을 가지고 다니므로, 시스템은 본인임을 알고 그 작업을 해도 되는지도 판단합니다.

이 가이드는 문법 암기가 아니라 요구사항을 AI에게 어떻게 설명할지를 다룹니다. 동작하는 것처럼 보이지만 첫날에 뚫리는 게 아니라, 안전한 로그인을 만들게 하기 위해서입니다.

세 가지 길: 직접 만들기·플랫폼·소셜 로그인

방법적합주의점
비밀번호 로그인 직접 구현완전한 제어, 원리 학습해싱·만료·무차별 대입 방어를 직접 책임
Auth 플랫폼빠르고 안전벤더 종속. 대부분 무료 한도 있음
소셜 로그인(Google 등)가입 문턱 낮추기그래도 내 쪽에서 세션을 만든다

초보자의 현실적인 선택은 보통 '플랫폼 Auth + 소셜 로그인'입니다. 가장 사고가 잘 나는 비밀번호 보관을 전문가에게 맡기고, 자신은 '누가 무엇을 볼 수 있는가'에 집중합니다.

AI에게 이렇게 말하세요, 안 그러면 구멍을 받습니다

AI는 '동작하는' 로그인은 잘 만들지만 기본값이 늘 안전하지는 않습니다. 프롬프트에서 다음을 명시적으로 요구하세요.

  • 비밀번호는 반드시 해싱(bcrypt 또는 argon2)하고, 절대 평문으로 저장하지 않는다.
  • 로그인 시 발급한 토큰/세션은 만료를 두고 취소 가능해야 한다(로그아웃·비밀번호 변경 시 무효화).
  • 토큰은 httpOnly 쿠키에 넣고, 프런트엔드 JavaScript가 읽을 수 있는 곳에 두지 않는다.
  • 권한 확인은 백엔드에서 한다. 프런트는 버튼을 숨길 뿐, 보안 경계가 아니다.

이 목록을 '인수 기준'으로 AI에게 붙여 넣고 단계별로 구현하게 하세요.

아키텍처

초보자가 빠지는 함정

  • 평문으로 비밀번호 저장: 한 번 유출되면 모두의 비밀번호가 노출. 반드시 해싱.
  • 만료 없는 토큰: 한 번 도난당하면 계속 사용. 짧은 만료 + 취소 가능으로.
  • 프런트에서 권한 판단: '관리자인가?' 판단을 화면에 두면, 조금 아는 사람이 고쳐서 들어옵니다.
  • 시크릿을 프런트에: API 키나 서명 키가 브라우저에 도달한 순간 공개나 마찬가지.

다음 단계

자주 묻는 질문

AI에게 로그인을 만들게 하면 되는데, 왜 이걸 배워야 하나요?

AI는 ‘동작하는’ 로그인은 잘 만들지만 기본값이 늘 안전하지는 않습니다. 평문 비밀번호, 만료 없는 토큰, 프런트의 권한 판단 등. 직접 쓸 필요는 없지만, 이 보안 규칙을 알아보고 ‘인수 기준’으로 요구하며 실제로 지켰는지 확인할 수 있어야 합니다.

비밀번호 로그인을 직접 만드는 것과 Google 로그인을 쓰는 것 중 무엇이 안전한가요?

초보자에게는 소셜 로그인(Google 등)이나 Auth 플랫폼이 대체로 더 안전합니다. 가장 사고나기 쉬운 ‘비밀번호 보관’을 전문가에게 맡기기 때문입니다. 직접 만들어도 되지만 해싱·무차별 대입 방어·토큰 관리를 스스로 책임져야 해 문턱이 더 높습니다.

참고 자료

  1. Authentication Cheat SheetOWASP
  2. Session Management Cheat SheetOWASP

CRM 경로 다음 단계: 폼에서 CRM