본문 바로가기

Back-End/Node.js

Node.js.47.1.App제작-출력정보에 대한 보안

반응형

저번 시간: 오염된 정보가 들어오는 문제

이번 시간: 오염된 정보가 나가는 문제

 

목표

태그를 그대로 표현하여 문제 해결하기

 


(1) 문제 예시 1

XSS로 들어갈 때마다 경고창이 뜬다. 이를 page view source로 보면

script 태그가 들어가 있기 때문에 발생한다.

즉, 공격자가 자바스크립트 코드를 심어놓으면 방문자가 메롱 알림창을 보게 된다.

 

(2) 문제 예시 2

이를 제출하게 되면 입력한 웹 브라우저로 이동하게 된다.

 

이 외에 사용자의 로그인 정보를 갈취한다던지, ...

많은 온라인 서비스들이 사용자들에게서부터 입력받은 정보를 바깥으로 출력할 때는 정보에서 문제가 될 수 있는 것들을 필터링하는 작업이 필요하다.

 


해결 방법

1. 사용자가 입력한 <script>태그를 지운다.

2. <script>태그를 웹 브라우저 상에 그대로 표시해준다. <-이걸 해보자!

 

Google에 HTML entities 검색해본다.

 

HTML Entities

HTML Entities Reserved characters in HTML must be replaced with character entities. HTML Entities Some characters are reserved in HTML. If you use the less than (<) or greater than (>) signs in your text, the browser might mix them with tags. Character ent

www.w3schools.com

&lt; 를 입력하면 <를, &gt;를 입력하면 >를 그대로 표현해준다. 따라서 코드를 아래와 같이 바꿔보자.

// XSS.js

&lt;script&gt;
location.href = "https://opentutorials.org/course/1';
&lt;/script&gt;

짜잔. 그대로 출력된다.

반응형