반응형

◎ XSS 란?

크로스 사이트 스크립팅 (또는 사이트 간 스크립팅) 이라고 불리며 영문명칭은 cross-site scripting 로 영문약어는 xss 이다 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 사용자가 웹페이지에 악성 스크립트를 삽입할수 있는 취약점이다.

그래서 웹개발자들은 주로 xss필터를 고려하여 개발을 한다. sanitize-html 은 이러한 공격 기법을 막기위해 나온 nodejs의 모듈이다.


◎ sanitize-html 란?

▼ 내용

sanitize : 소독하다

html의 input 또는 textarea 또는 기타등등의 사용자 입력정보에 <script>코드기술</script> 이란 정보를 적을시 웹브라우저에서 저게 txt가 아닌 script 기술로 받아들여서 사용자가 이를 악용하여 악성스크립트를 집어넣을 수 있다.

이것을 방어하기 위한 node의 패키지모듈로 <script>,<a> 등등 기타 태그들을

변환시켜주어 악성스크립트로 변질되는 것을 막아주는 보안 라이브러리다.


◎ sanitize-html 설치방법

▼ 내용

-S : 해당프로젝트에서만 적용

-g : 전체 글로벌 적용

npm install -S sanitize-html

◎ sanitize-html 사용법

▼ 공식문서

var sanitizeHtml = require('sanitize-html'); var dirty = 'some really tacky HTML'; var clean = sanitizeHtml(dirty);

▼ 예제

var sanitizeHtml = require('sanitize-html'); var dirty = `스크립트는 과연 <script>some really tacky HTML</script> 무시될까? h1태그는 <h1>링크</h1> 무시가 될까?`; var clean = sanitizeHtml(dirty); console.log(clean); /*스크립트는 과연 무시될까? h1태그는 링크 무시가 될까?*/

▼ 결과


▼ 내용

위 처럼 sanitize 를 사용하면 script 같은 태그는 출력이 안되게하고, h1 태그같은경우도 태그는 없애 버린다. 하지만 웹에서 실행해보면 글씨포인트는 커진상태로 태그만 사라진다. 이처럼 악성스크립트를 사전에 차단시킬수 있다. xss필터 같은경우로 사용할수 있다.


◎ sanitize-html 태그 허용하기

▼ 내용

모든걸 sanitize 로 자동 clean 시키는게아니라. 허용적으로 태그를 허용하게 할수도있다.

▼ 공식문서

// Allow only a super restricted set of tags and attributes clean = sanitizeHtml(dirty, { allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ], allowedAttributes: { 'a': [ 'href' ] }, allowedIframeHostnames: ['www.youtube.com'] });

▼ 예제

var sanitizeHtml = require('sanitize-html'); var dirty = `h1태그는 <h1>링크</h1> 무시가 될까?`; var sanitizedDescription = sanitizeHtml(dirty,{ allowedTags:['h1'] }); console.log(sanitizedDescription); //h1태그는 <h1>링크</h1> 무시가 될까?


반응형

+ Recent posts