Rails에서 배우는 XSS 취약점
스카스카 기사이지만 용서해주세요
연습 환경
기사 투고, 코멘트 투고, 북마크 등을 할 수 있는 연습용 앱 「TARGET」
GitHub 저장소 htps : // 기주 b. 코 m / 후미 타카 1 / 탄 t
XSS 취약성이란?
XSS에는 반사형, 지속형, DOM 베이스의 3 타입으로 분류되고, 단순히 XSS라고 하면 반사형 XSS를 가리키는 것이 많은 것 같습니다.
상기의 3 타입에 공통되는 성질로서 「외부로부터의 파라미터를 이용해 web 페이지를 출력하고 있는 어플리케이션에 있어서, 임의의 html 요소나 속성이 삽입 할 수 버린다」곳이 XSS 취약성의 간입니다.
삽입된 스크립트에 의해 세션이나 입력 데이터가 유출되거나, 유해한 조작이나 리디렉션이 가능하게 되는 등 많은 피해가 발생합니다.
예 연습용 앱에는 게시물에 댓글을 달 수 있는 기능이 있습니다.
스크립트 태그가 포함된 잘못된 댓글을 게시하면 브라우저는 스크립트 태그로 해석합니다.
연습용 앱에서는 Rails의 기능에 의해 쿠키의 Httponly 속성이 부여되어 있으므로, Javascript로 세션을 취득할 수 없습니다.
그러나 모든 페이지로 리디렉션하거나 불법 양식을 원래 페이지에 겹쳐서 표시할 수 있습니다.
왜 발생하는가
상기의 예에서는 외부로부터의 파라미터를 사용해 HTML 요소 내용을 출력할 때에, 특수 문자["'&< >]를 이스케이프 하고 있지 않는 것이 원인.
등호 기호가 2개의 ERB식 <%== @comment.content %>
로 의도적으로 이스케이프를 회피하고 있다.
XSS 취약성이 발생할 수 있는 곳에는 ①HTML 속성값 ②HTML 요소 내용 ③링크 ④이벤트 핸들러 등이 있으며, 각각 이스케이프 방법이 다르므로 장소에 있던 이스케이프를 할 필요가 있다.
각각의 이스케이프 방법에 대해서는 후일 기사로 합니다.
Reference
이 문제에 관하여(Rails에서 배우는 XSS 취약점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Fumitaka1/items/195ea7954e16e55a0954
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
상기의 예에서는 외부로부터의 파라미터를 사용해 HTML 요소 내용을 출력할 때에, 특수 문자["'&< >]를 이스케이프 하고 있지 않는 것이 원인.
등호 기호가 2개의 ERB식
<%== @comment.content %>
로 의도적으로 이스케이프를 회피하고 있다.XSS 취약성이 발생할 수 있는 곳에는 ①HTML 속성값 ②HTML 요소 내용 ③링크 ④이벤트 핸들러 등이 있으며, 각각 이스케이프 방법이 다르므로 장소에 있던 이스케이프를 할 필요가 있다.
각각의 이스케이프 방법에 대해서는 후일 기사로 합니다.
Reference
이 문제에 관하여(Rails에서 배우는 XSS 취약점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Fumitaka1/items/195ea7954e16e55a0954텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)