*CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)**는 공격자가 사용자를 속여서 피해자의 권한으로 악성 요청을 보내는 공격입니다.
이걸 막기 위해 CSRF 토큰이라는 ‘일회용 비밀번호(비밀 코드)’를 서버가 만들어서 클라이언트에게 주고,
클라이언트가 요청할 때 이 토큰을 반드시 같이 보내도록 합니다.
서버는 “보내온 토큰이 맞는지” 확인해서 정상 요청인지 검증합니다. 토큰이 없거나 틀리면 요청을 거절합니다.
/login
)에서 아이디와 비밀번호를 입력하면,UserService.loadUserByUsername()
에서 DB의 사용자 정보와 역할(role
)을 읽어옵니다.${_csrf.token}
변수로 전달합니다.register.jsp
와 login.jsp
폼에 아래처럼 넣었던 이 부분이 바로 CSRF 토큰 전달입니다: