csrf에 대해 내 응용 프로그램을 보호하려고합니다. 문제가 무엇인지, 솔루션이 어떻게 작동하는지 이해할 수는 없지만, 일부 연구를 거친 후에 Angular가 사용하는 솔루션을 생각해 냈습니다. 지금까지 내가 가지고 같이, 내 솔루션은 다음과 같은 단계가 필요합니다요청 당 csrf 토큰이 작동하는 방식
- 내 스파
에 대한> 클라이언트 요청 -> 내가 CSRF 토큰을 전송 (하지 Http 만이 그것을 읽을 수 있습니다 JS 있도록). 또한이 csrf 토큰을 서버의 사용자 세션에 저장합니다.
-> 모든 게시물 요청에 대해 클라이언트가 csrf 토큰을 읽고이 토큰에 X-XSRF-TOKEN 헤더를 설정해야합니다.
-> 요청 헤더와 사용자 세션 csrf 토큰을 확인하여 모든 요청을 확인합니다. 일치하는 경우, 나는 또한 인증을 위해 jwt를 확인합니다.
-> csrf 토큰의 유효성을 확인한 후 데이터베이스를 변경합니다. 또한 csrf 토큰을 다시 변경하고 새 토큰을 사용자에게 보내고 세션의 토큰을 변경합니다.
하지만 어떻게 도움이되는지 잘 모르겠다. xss 취약점이있는 경우 주입 된 자바 스크립트 코드도 동일한 작업을 수행 할 수 있습니다. 문제를 이해하고 그러한 솔루션이 어떻게 도움이되는지 알고 싶습니다. 감사.
참고하시기 바랍니다. 또한 익스프레스 서버에서 세션 관리를 위해 redis를 사용하여 JWT 기반 인증을 구현하고 있습니다.
나는 내가 읽은 당신의 요점과 이전의 것들을 얻었다. 토큰이있는 헤더가 필요하고 사이트 간 요청이 클라이언트에서하는 것처럼 그렇게 할 수 없기 때문에 구현이 유효합니다. – FurkanO
귀하의 사이트에 삽입되지 않은 교차 사이트는 쉽게 쿠키를 얻을 수 없습니다. 따라서 모든 인증을 포함하여 더 안전하게 유지할 수 있습니다. CSRF 토큰은 단명해야하며 단일 요청에 대해서만 적합해야합니다. –