오늘도 보안 :)

XSS란 무엇인가?

XSS(Cross-Site Scripting)는 웹 페이지에 악성 스크립트를 삽입하는 공격이다.
주로 여러명의 사용자가 보게 되는 게시판에 악성 스크립트를 담은 글을 올리는 형태로 공격한다.
이를 통해 사용자의 쿠키나 세션을 탈취하거나, 자동으로 비정상적 기능을 수행하게 하는 등의 공격이 가능해진다.

이를 대비하기 위해서는 사용자로부터 입력받은 값을 검사해 공격할 수 없도록 해야한다.
html 태그가 그대로 동작하지 않도록 striptagreplace등의 함수로 출력 내용을 감싸는 등의 방법이 있다.

CSRF란 무엇인가?

CSRF(Cross-Site Request Forgery)는 악성 스크립트를 이용해 사용자가 의도하지 않은 행위를 하도록 하는 공격이다.

예를 들어, 게시판에 관리자가 글을 클릭하면 관리자 권한을 가진 글로 바뀌게 하는 악성 스크립트를 담은 글을 올린다.
관리자가 공격자가 올린 링크를 누르게 되면, 브라우저는 악성 스크립트를 해석한다.
이를 통해 사용자의 의도와는 다른 글이 올라오는 등의 공격이 완성된다.

공격자 게시글

제목: [시급] 관리자님 사이트가 이상해요
작성자: attacker(~@~.com)
본문: (악성 스크립트)

공격 성공으로 올라온 게시글

제목: [공지] 필독 바람
작성자: 관리자(~@~.com)
본문: 후원 계좌가 변경되었음 (공격자 계좌)

XSSCSRF 모두 악성 스크립트를 이용해 공격한다는 공통점이 있다.

하지만 XSS는 악성 스크립트를 통해 사용자(Client)를 공격했다면,
CSRF는 악성 스크립트를 통해 웹 페이지(Server)를 공격한다는 차이점이 있다.