less than 1 minute read

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

XSS

크로스 사이트 스크립팅(사이트 간 스크립팅, cross-site scripting, XSS)
웹 어플리케이션에서 많이 나타나는 취약점의 하나로, 웹 사이트 관리자가 아닌 사용자가
웹 페이지에 악성 스크립트를 삽입 할 수 있는 취약점이다.
웹 개발자들은 주로 xss 필터를 고려하여 개발 한다.
sanitize-html은 이러한 공격 기법을 막기 위한 nodejs 의 모듈이다.
ref https://dydals5678.tistory.com/99

  • 사용자가 파일을 create 할 때 html의 input 또는 textarea 등에서
    자바 스크립트 script 태그와 alert(); 를 입력하면
    웹브라우저에서는 이것을 script 기술로 받아들이기에, 이를 악용하여 악성 스크립트를 삽입 할 수 있다.

  • location.href=””; 이러한 코드를 심으면 원하지 않은 페이지로 이동된다.

  • 사용자의 로그인 정보를 갈취 할 수도 있다.

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

script 태그를 웹 브라우저가 해석하는 것이 아니라 문자열 그대로 나타나게 해야한다.

HTML Entities 구글링

<script> 태그에 대응하여 수동으로 처리 할 수 있다.

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

20200418_012539_1