일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 나선형 모형
- 시스템 파악 정리
- avax.net.ssl.SSLHandshakeException:
- 에자일 모형
- 시스템 파악
- 디미터 법칙
- vue
- springboot
- table scan
- Bandit Level 6 → Level 7
- was SQLRecoverableException
- 인증서만료에러
- Law of Demeter
- 프로토타입 모형
- OpenAPI
- pl/sql
- 변수명 짓는법
- 클린코드
- Bandit Level 6
- java.sql.SQLRecoverableException
- plsql
- was버그
- 커맨드공부
- 명령어공부
- CSS
- 스크럼기법
- 폭포수 모형
- SQLRecoverableException
- mysql 튜닝
- Bandit Level 5
- Today
- Total
개발햄비
[node.js] 입력정보 보안 처리 본문
홈페이지에서 댓글이나 게시물을 작성할 때 사용자가
라는 식으로 스크립트 태그를 넣을 수 있다
이렇게 되면 작성된 스크립트 태그에 의해서 alert가 작동되게 되는데 이걸 이용하여
유저의 정보를 빼가거나 , 링크를 걸어 악의적으로 홈페이지 이동을 만들 수 있다
이 때 방법은 2가지가 있다
1. 하나는 script 태그를 완전히 지우는 방법과
2. 또 다른 하나는 < > 태그를 entity code로 전환해주는 것이다.
같이 변환시켜 주면 스크립트가 적용되지 않고 그대로 본문에
가 출력되는 것을 볼 수 있다.
참고자료
Result | Description | Entity Name | Entity Number |
---|---|---|---|
non-breaking space | |   | |
< | less than | < | < |
> | greater than | > | > |
& | ampersand | & | & |
" | double quotation mark | " | " |
' | single quotation mark (apostrophe) | ' | ' |
¢ | cent | ¢ | ¢ |
£ | pound | £ | £ |
¥ | yen | ¥ | ¥ |
€ | euro | € | € |
© | copyright | © | © |
® | registered trademark | ® | ® |
하지만 이런걸 손으로 작성하기엔 너무 무리이기 때문에
npm sanitize-html 라는 보안 모듈이 있다
커맨드 창에
npm init 을 실행
-> 나의 에플리케이션을 npm으로 관리하기 위한 절차를 시작
그 후 엔터를 쭉 누르고 쭉 넘어가면 package.json이 생성되고 프로젝트에 관한 정보를이 생성된다
그 후 다시
npm install -S sanitize-html 를 입력한다
(-S를 선언하면 내가 진행하고 있는 프로젝트의 작은 부품으로 설치가 되고 -g를 하게 되면
컴퓨터 전역에서 사용할 수 있는 것이 설치가 된다.)
다운로드가 시작..
node_modules가 생성되고 여러가지 파일이 다운로드 받아지고
다시
package.json에
"dependencies": {
"sanitize-html": "^1.20.0"
}
의존성이 추가된다
sanitize-html 사용법
var sanitizeHtml = ;var dirty = 'some really tacky HTML';var clean = ;
위 sanitizeHtml 을 선언 후
sanitizeHtml(inputData); 를 통해 오염된 데이터 ( 스크립트 선언 등) 를 살균하는 것이 가능하다.
sanitizeHtml를 통해 살균이 되면 <script > 는 강력하게 삭제가 된다 .
하지만 <p> 태그나 <h1>태그 같은 경우 완전히 지워지지는 않고 내용은 살려주게 되는데 태그는
적용되지 않는다 . 이때 태그를 허용하는 방법이 있는데
clean =;
등과 같이 사용하는 것이 가능하다.
즉
var sanitizeData = sanitizeHtml( inputData ,{
allowedTags: ['h1','p']
});
allowedTags: ['h1','p']를 통해 허용할 수 있는 태그를 지정하게 되면 allowedTags: 안에 있는 태그는 작성할 수 있게 된다 .
'개발 > node.js' 카테고리의 다른 글
[node.js] CRUD : read 기능 만들기 (0) | 2019.08.31 |
---|---|
[node.js] 페이스북 + node 챗봇 만들기 (4) | 2019.04.07 |
[node.js] node.js CRUD기능 예제 (0) | 2019.02.20 |
[node.js] CRUD : update 기능 만들기 (0) | 2019.01.30 |
[node.js] CRUD : delete 기능 만들기 (0) | 2019.01.30 |