설명
Express에서 serve-index 미들웨어를 운영 경로에 등록하면 요청자가 디렉터리의 파일 목록을 볼 수 있습니다. 정적 루트에 백업 파일, 설정 파일, 로그, 소스맵이 남아 있으면 내부 구조와 민감한 파일명이 노출될 수 있습니다.
잠재적 영향
- 내부 디렉터리 구조와 파일명 노출
- 백업 파일, 로그, 설정 파일 다운로드 가능성 증가
- 노출된 파일명과 버전을 이용한 후속 공격 정찰
해결 방법
- 운영 환경에서는
serve-index를 등록하지 마세요. - 공개 전용 정적 디렉터리만
express.static으로 제공하세요. - 필요한 파일은 명시적인 라우트나 인덱스 파일로만 제공하세요.
- 배포 산출물에서 백업 파일, 로그, 설정 파일, 소스맵을 제거하세요.
예시
변경 전
javascript
const express = require('express');
const serveIndex = require('serve-index');
const app = express();
app.use('/files', serveIndex('public/files'));
변경 후
javascript
const express = require('express');
const app = express();
app.use('/assets', express.static('public'));
app.get('/files', (req, res) => res.status(403).end());
설명:
- 변경 전: Express 애플리케이션에서
serve-index미들웨어를 등록하면 요청자가 디렉터리 내 파일 목록을 탐색할 수 있습니다. - 변경 후: 운영 환경에서
serve-index를 등록하지 않습니다.