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
'개발일기 > Node.js 공부하기' 카테고리의 다른 글
Node.js 기초 공부를 마치며... (0) | 2021.04.11 |
---|---|
App - 출력정보에 대한 보안 & Node.js - npm 활용 (0) | 2021.04.11 |
App - 템플릿 기능 정리 정돈하기 (객체와 모듈 활용) (0) | 2021.04.10 |
Node.js - 모듈의 형식 (0) | 2021.04.10 |
OOP (Object Oriented Programming) - 객체 지향 프로그래밍 (0) | 2021.04.10 |