본문 바로가기
  • [성공하는 개발자] - Developer
Node

[Node] 입출력 보안

by Sein-JH 2021. 5. 2.
728x90

Security

path

nodejs path parse

node
> var path = require('path');
undefined

> path.parse('../password.js');
{root: '',
 dir: '..',
 base: 'password.js',
 ext: '.js',
 name: ''password' }

> path.parse('../password.js').base;
 'password.js'

사용자로부터 모든 경로가 들어오는 곳을 변경해 줍니다.

var path = require('path');

var filteredId = path.parse(queryDate.id).base;
fs.readFile(`data/${filteredId}`, 'utf8', function(err, description){
    // 코드
}

${filteredId} 경로에 데이터를 변경해 주었다.

사용자에게 시스템 경로를 보여주지 않게 변경해 주었다.

 

2. XSS (Cross-Site Scripting)

스크립트를 활용해 정보 탈취 및 수집 할수 있는 기법

noirstar.tistory.com/266

 

XSS(Cross-Site Scripting) 이란?

2. XSS (Cross-Site Scripting)  2.1 개요 Ÿ   XSS Attack  XSS(Cross-Site Scripting) 이란 웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하..

noirstar.tistory.com

 

3. XSS 보안 방법

sanitize-html [모듈]

 

스크립트 공격

<script>
  alert('merong');
</script>

 

 - 설치방법

npm init    // 엔터 계속

모든 정보 엔터 하면 package.json 파일이 생성 된걸 확인 할 수 있다.

npm install -S sanitize-html   // 설치

mode_modules 폴더가 생성된다.

- 사용방법

var sanitizeHtml = require('sanitize-html');

fs.readFile('./data', 'utd8', function(err, description){
  var title = queryDate.id;
  var sanitizeTitle = sanitizeHtml(title);    //태그사용 못함
  var sanitizeDescription = sanitizeHtml(description);  //태그사용 못함
  // 코드계속
}

input 데이터 값에 태그 넣고 Submint 하면 작성된 테그는 사용되지 않고 출력이 된다.

 

옵션을 사용해 사용하고 싶은 태그들은 아래 경로에 가면 옵션 사용법이 있다.

 

www.npmjs.com/package/sanitize-htm

 

sanitize-html

Clean up user-submitted HTML, preserving whitelisted elements and whitelisted attributes on a per-element basis

www.npmjs.com

 

'Node' 카테고리의 다른 글

[Node] npm package.json 생성  (0) 2021.10.25
[Node] express 초기 세팅  (0) 2021.10.21
[Node] App 모듈 형식  (0) 2021.05.02
[Node] JavaScript 객체  (0) 2021.05.02
[Node] 글생성/수정/삭제  (0) 2021.05.02

댓글