2023-04-15 @이영훈
XSS (Cross-Site Scripting)와 CSRF (Cross-Site Request Forgery)는 모두 웹 보안 공격의 종류로, 웹 애플리케이션의 취약점을 이용하여 공격자가 사용자의 정보를 탈취하거나 조작할 수 있습니다.
XSS (Cross-Site Scripting)
XSS는 공격자가 악성 스크립트 (주로 Javascript)를 삽입하여, 이를 통해 사용자의 정보를 탈취하거나 조작하는 공격입니다. XSS 공격은 웹사이트에 입력 폼이 있는 경우, 입력 필드에 악성 스크립트를 삽입하고, 사용자가 해당 페이지를 방문할 때 스크립트가 실행되어 사용자의 브라우저를 조작하게 됩니다.
예를 들어, 게시판 글쓰기 기능에 악성 스크립트를 삽입하여 해당 게시글을 조회한 사용자의 브라우저에서 쿠키 정보를 탈취하거나, 공격자가 지정한 다른 웹사이트로 리다이렉트시키는 등의 악의적인 행위를 수행할 수 있습니다.
CSRF (Cross-Site Request Forgery)
CSRF는 공격자가 사용자의 인증 정보를 이용하여, 사용자가 의도하지 않은 요청을 서버에 전송하도록 하는 공격입니다. 공격자는 사용자가 로그인한 상태에서 악성 링크나 이미지 등을 통해, 인증된 요청을 전송합니다. 이로 인해, 공격자가 원하는 동작을 서버에서 수행하게 되어 사용자의 정보가 탈취되거나 조작될 수 있습니다.
예를 들어, 은행 웹사이트에 로그인한 사용자가 공격자가 만든 악성 링크를 클릭하면, 이 링크를 통해 은행 계좌 이체 등의 요청이 서버로 전송되어, 공격자가 원하는 계좌로 돈이 이체될 수 있습니다.
차이점
XSS와 CSRF의 가장 큰 차이점은 공격의 목적과 방법입니다. XSS는 사용자의 브라우저를 조작하여 정보를 탈취하거나 조작하는 것이 목적이며, 공격자는 입력 폼에 악성 스크립트를 삽입하여 사용자의 브라우저에서 실행시키는 방법을 사용합니다.
반면, CSRF는 사용자의 인증 정보를 이용하여 서버에 요청을 전송하도록 하는 것이 목적이며, 공격자는 악성 링크나 이미지 등을 이용하여 사용자를 속여 인증된 요청을 서버에 전송하도록 유도합니다.
또한, XSS는 공격자가 악성 스크립트를 삽입하는 방법이기 때문에, 취약점이 존재하는 웹사이트에서만 공격이 가능합니다. 그에 반해, CSRF는 인증 정보를 이용하기 때문에, 로그인한 상태에서 공격이 가능합니다.
따라서, XSS는 취약점을 발견하여 공격을 시도하는 것에 비해, CSRF는 인증 정보를 탈취하여 공격하는 것이기 때문에, XSS보다 더 위험한 공격이라고 볼 수 있습니다.
보안적으로, XSS 및 CSRF를 방지하기 위해서는 웹 애플리케이션에서 적절한 보안 대책을 적용해야 합니다. 일반적으로는 입력값 검증, XSS 필터링, 쿠키의 HttpOnly 속성 적용, CSRF 토큰 사용 등의 방법이 적용됩니다.