NestJS APIのレスポンスからx-powered-by: Expressヘッダーを削除する方法

NestJSでx-powered-by: Express
ヘッダーを削除する方法は、セキュリティと情報漏洩の観点から非常に重要です。
デフォルトではNestJSは内部的にExpressを使用しており、そのためレスポンスヘッダーにx-powered-by: Express
が付与されます。このヘッダーは攻撃者に使用しているフレームワークの情報を与えてしまうため、非表示にするのが望ましいです。
x-powered-by
ヘッダーの無効化手順
NestJSでこのヘッダーを削除する方法はとてもシンプルです。
ts// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication>(AppModule);
// ExpressのX-Powered-Byヘッダーを削除
app.disable('x-powered-by');
await app.listen(3000);
}
bootstrap();
この一行を追加するだけで、すべてのレスポンスからx-powered-by
が削除されます。(NestFactory.createは必要です。 )
コード | 説明 |
---|---|
app.disable(...) | 内部で使っているExpressの設定を無効化 |
'x-powered-by' | 対象となるレスポンスヘッダーのキー |
補足:Fastifyを使用している場合
NestJSではExpressの代わりにFastifyを使うことも可能です。その場合はFastifyのオプションでヘッダーを無効化します。
tsconst app = await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter({ logger: true })
);
app.getHttpAdapter().getInstance().removeHeader('x-powered-by');
まとめ
NestJSでセキュアなAPIを提供するには、不要な情報を外部に出さないことが第一歩です。
x-powered-by: Express
ヘッダーを削除する設定はたった一行で完了し、セキュリティ向上に直結します。
プロジェクトの初期段階で対応しておくと安心です。
NestJSの記事Nestjs
- article
どっちを使うべき?TypeScriptのtype(型エイリアス)とinterfaceの違いと使い分け
- article
TypeScript 5.8 で強化された型推論!その裏で潜む 落とし穴と回避策
- article
【早見表】TypeScript Generics(ジェネリクス)の使用例と記法まとめ
- article
開発AIエディタ比較 Github Copilot vs Cursor vs Cline vs devin!それぞれの特徴や料金の違いを比較してみた
- article
【2025年5月版 早見表】TypeScript 5.7 tsconfig.jsonの主要オプションのまとめ
- article
【対処法】Cursorで発生する「Connection failed. If the problem persists ...」エラーの原因と対応