로그인 기능까지는 AI가 뚝딱 만들어줘서 잘 됐는데, 테스트하다 보니 이상한 걸 발견할 때가 있어요. 내 계정으로 로그인한 상태에서 다른 사람이 쓴 글의 수정 버튼을 눌러도 그냥 수정이 되어버리는 상황이요.
이건 인증은 되어 있지만 인가가 빠진 경우예요.
한 줄 정의
인증(Authentication)은 "너 누구야?"를 확인하는 과정이고, 인가(Authorization)는 "너 이거 해도 돼?"를 확인하는 과정이에요. 로그인은 인증만 담당하고, 그다음에 권한을 확인하는 건 별도로 만들어줘야 합니다.
왜 필요한가
로그인 기능을 넣으면 "누가 접속했는지"는 알 수 있지만, 그 사람이 특정 글을 수정하거나 삭제할 자격이 있는지는 자동으로 검사되지 않아요. 그건 개발자(혹은 AI)가 "이 글의 작성자와 지금 로그인한 사람이 같은가?" 같은 규칙을 코드로 따로 넣어줘야 판단되는 부분이거든요. 로그인 화면만 그럴듯하게 만들고 이 부분을 빼먹으면, 겉보기엔 완성된 서비스인데 보안 구멍이 뚫린 상태가 됩니다.
실전에서 이렇게
게시판이나 커뮤니티형 서비스를 만들 때 "수정/삭제 버튼은 작성자한테만 보이게 해주세요"라고만 AI에게 요청하면, 버튼만 숨겨질 뿐 서버 쪽에서 실제로 막아주지 않는 경우가 있어요. 버튼을 안 보이게 해도 주소를 직접 입력하거나 요청을 조작하면 뚫릴 수 있거든요. 그래서 "프론트엔드에서 버튼 숨기는 것 말고, 서버에서도 작성자 확인해서 막아주세요"라고 구체적으로 요청하는 게 중요합니다.
비유
인증은 건물 입구에서 사원증으로 신원을 확인하는 것이고, 인가는 그 사원증으로 특정 층이나 방에 들어갈 수 있는지 확인하는 것과 같아요. 사원증이 있다고(인증) 아무 방이나(인가 없이) 들어갈 수 있는 건 아니잖아요. 각 방마다 "이 카드로 들어와도 되는 사람인가"를 따로 확인해야 하는 것처럼, 서비스도 기능마다 권한 확인이 따로 필요합니다.
댓글 0
첫 댓글을 남겨보세요!