Skip to main content

エラーの詳細をクライアントから隠す

一段落説明

サーバファイルのパス、使用中のサードパーティモジュール、その他攻撃者に悪用される可能性のあるアプリケーションの内部ワークフローなど、機密性の高いアプリケーションの詳細情報が漏洩するリスクがあるため、本番環境においてクライアントにアプリケーションエラーの詳細を晒すべきではありません。 Express には、アプリ内で発生する恐れのあるエラーを処理するエラーハンドラが組み込まれています。このデフォルトのエラー処理ミドルウェア関数は、ミドルウェア関数スタックの最後に追加されます。 エラーを next() に渡し、カスタムエラーハンドラで処理しない場合は、組み込みの Express エラーハンドラで処理されます。エラーはスタックトレースと共にクライアントに書き込まれます。この動作は NODE_ENVdevelopment に設定されている場合に有効ですが、NODE_ENVproduction に設定されている場合は、スタックトレースは書き込まれず、HTTP レスポンスコードのみが書き込まれます。

コード例: Express エラーハンドラ

// 本番のエラーハンドラ
// スタックトレースがユーザーに漏洩しない
app.use((err, req, res, next) => {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});

その他のリソース

🔗 Express.js エラーハンドリングドキュメント