Expressでのディレクトリ一覧表示の有効化

Expressでのディレクトリ一覧表示の有効化

説明

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());

説明:

  • 変更前: serve-index を登録することで、リクエストしたユーザーがファイル一覧を閲覧できます。
  • 変更後: 本番のアプリケーションには serve-index を登録していません。

参考資料