본문 바로가기
더이상 하지 않는 Backend - NodeJS/Node-Express 개론(완)

Node-Express 서버에서 CSRF 공격을 방어하는 방법

by VictorMeredith 2023. 3. 31.

안녕하세요! 오늘은 Node.js와 Express를 사용하여 구축한 서버에서 CSRF(Cross-Site Request Forgery) 공격을 방어하는 방법에 대해 설명하겠습니다. CSRF 공격은 웹 사이트의 사용자가 자신의 의도와는 무관하게 공격자가 원하는 작업을 수행하도록 만드는 보안 취약점입니다. 이 포스트에서는 CSRF 공격을 방어하는 방법 중 하나인 CSRF 토큰을 사용하는 방법을 소개하겠습니다.

먼저, 필요한 패키지를 설치해야 합니다. csurf 패키지를 사용하여 CSRF 공격을 방어할 수 있습니다. 패키지를 설치하려면 다음 명령어를 실행하세요.

npm install csurf

이제 csurf 미들웨어를 사용하여 CSRF 토큰을 생성하고 검증하는 코드 예제를 살펴봅시다.

 

- 위 코드에서는 csurf 미들웨어를 사용하여 CSRF 토큰을 생성하고 검증합니다. 

- /form 경로에서 폼을 렌더링할 때, req.csrfToken() 메소드를 호출하여 CSRF 토큰을 생성하고 렌더링된 폼에 토큰 값을 포함시킵니다. 

- 클라이언트가 폼을 제출하면, 미들웨어는 자동으로 토큰을 검증하고 유효하지 않은 토큰의 경우 요청을 거부합니다.

 

 

위의 HTML 코드에서는 폼 필드에 CSRF 토큰을 포함시켜 클라이언트가 제출한 폼 데이터와 함께 서버로 전송되도록 합니다. 서버에서는 이 토큰을 사용하여 요청이 정당한지 확인합니다.

이렇게 하면 Node-Express 서버에서 CSRF 공격을 방어할 수 있습니다. csurf 미들웨어를 사용하면, CSRF 토큰 생성 및 검증을 간단하게 처리할 수 있으며 서버를 안전하게 유지할 수 있습니다. 이 포스트가 도움이 되었다면 다른 개발자들과 공유해 주세요. 감사합니다!

참고: 실제 프로덕션 환경에서는 보안을 강화하기 위해 추가적인 방어책이 필요할 수 있습니다. 예를 들어, 사용자 인증과 함께 콘텐츠 보안 정책(CSP), X-Content-Type-Options, X-Frame-Options 등의 보안 헤더를 사용하여 웹 애플리케이션을 더욱 안전하게 만들 수 있습니다.

댓글