T-CREATOR

NestJSで作成したAPIのレスポンスヘッダーに付与されるx-powered-by: Express を消す方法を紹介

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ヘッダーを削除する設定はたった一行で完了し、セキュリティ向上に直結します。

プロジェクトの初期段階で対応しておくと安心です。

記事Article

もっと見る