본문 바로가기

개발일기/Node.js 공부하기

App - 입력 정보에 대한 보안

 

fs.readFile(`data/${title}`, 'utf8', (error, description) => { ... });

 

 

위의 코드에서 title은 브라우저에서 쿼리스트링(get방식)으로 넘어오는 데이터 인데,

사용자가 직접 입력 가능하므로 

title에 파일명이 아니라 경로를 입력할 수 있다.

 

만약 title이 '../password.js' 라는 경로로 입력되고,

그 경로에 데이터베이스 접속정보와 같은 중요한 정보들이 들어있다면

중요한 정보들이 그대로 브라우저에 노출되게 된다.

 

따라서 아래와 같은 방식으로 코드를 수정한다.

var path = require('path');
var filteredId = path.parse(title).base;

fs.readFile(`data/${filteredId}`, 'utf8', (error, description) => { ... });

 

 

 

 

 

 

출처

App - 입력 정보에 대한 보안

opentutorials.org/course/3332/21150