티스토리 뷰
입력창을 통한 입력을 받을 때,
<script>
//location.href = 'https://www.naver.com';
</script>
위와 같이 들어와선 안될 입력이 들어오게 된다면 큰 문제가 발생한다.
따라서 이에 대한 보안이 필요하다.
첫번째로 할 수 있는 것이
Character entities이다.
아래와 같이 하여서 <script> 모두 화면에 출력되도록 하는 것이다.
<script>
//location.href = 'https://www.naver.com';
뭐지 ;; 이 글을 쓰고 난 뒤에 내 티스토리 가면 네이버로 가진다..
이런 황당한 일이 있을 쑤가...
</script>
하지만 수동으로 해야하는 단점이 있다.
자동으로 하기 위해서는 사람들이 만들어놓은 API가 있다.
들어와서는 안되는 입력이 들어오게 된다면 이를 소독한다는 뜻에서
Sanitize-html 이라고 부른다.
https://www.npmjs.com/package/sanitize-html
이를 사용하기 위해서 npm init을 먼저 해준다.
npm init
package.json 파일을 생성하기 위함이다.
package name과 같은 설정들은 그냥 엔터 쳐주다가 yes 엔터 하면 된다.
npm init이 완료되면
npm install -S sanitize-html
위와 같은 명령어를 통해 sanitize-html 을 설치해준다.
-S 는 진행할 프로그램 속 부품으로 설치를 해준다는 뜻이다.
설치를 해줬다면 Sanitize를 사용할 js 파일로 가보자.
title에 sanitize를 한다고 가정할 때, 먼저 파일을 불러온다.
var sanitizeHtml = require('sanitize-html');
그 후, title을 sanitize를 해준다.
var sanitizedTitle = sanitizeHtml(title);
var html = template.HTML(title, list, `<h2>${sanitizedTitle}</h2>`);
사용 결과
title에 이런 잘못된 입력이 들어왔다.
웹 상에서는 아래와 같이 script 태그 부분은 빼고 표시된다.
오른쪽마우스 -> 페이지 소스보기 를 통해 소스를 봐도 script 태그 부분은 볼 수 없다.
강력하게 살균이 되었다 ! ! !
<h1> 태그를 입력하면, 그 속에 있는 내용은 살려주지만 태그는 지워버린다.
옵션을 통해 특정 태그를 허용할 수도 있으니 !!!! 잘 보시길
'Coding - Algo > Nodejs' 카테고리의 다른 글
[Nodejs] pm2 사용 (0) | 2021.06.25 |
---|---|
[Nodejs] VSCODE에서 MYSQL DB생성 (0) | 2021.06.24 |
[Nodejs] path.parse 사용 (0) | 2021.06.12 |
[Nodejs] 모듈의 형식 (0) | 2021.06.12 |
[Nodejs] Property 사용 (0) | 2021.06.09 |
- Total
- Today
- Yesterday
- 더 맵게
- 백준 dp 문제
- 메뉴리뉴얼 풀이
- 프로그래머스 자바
- SWEA
- swea 타일링
- ubuntu
- 백준
- swea 4070 타일링
- swea 1240 자바
- swea 타일링 자바
- 1699 자바
- 우분투
- 파이썬 풀이
- 삼성청년SW아카데미
- union-find
- 백준 풀이
- 프로그래머스 더 맵게
- 타일링 자바
- 파이썬
- poker swea
- 프로그래머스
- 백준파이썬
- 프로그래머스 파이썬
- 백준 17144
- yoloV3
- 3996 자바
- 1240 자바
- swea 1240
- SSAFY
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |