PHPでX-Powered-Byを出力させない方法|ほかに注意すべきヘッダ情報も解説

PHP PHP
主にPHPに関する記事

PHPやLaravelのアプリを公開する際、セキュリティ安全性は非常に重要です。 その中でもHTTPヘッダに自動追加されるX-Powered-Byは、アプリの実装技術を露呈してしまうため、攻撃者に目をつけられやすいリスクになります。

本記事では、PHPでX-Powered-Byを消す方法を解説し、その他にも注意すべきヘッダ情報とその対策を紹介します。


PHPでX-Powered-Byを削除する方法

php.iniで削除する

最も正統的で効果的な方法はphp.iniで削除することです。

; php.iniに追加または変更
expose_php = Off
  • expose_phpOffにすることで、PHPがHTTPヘッダに情報を追加しなくなります。

header()ファンクションで解決

php.iniを変更できない環境の場合、PHPスクリプトなどでは以下のようにします。

<?php
// X-Powered-Byヘッダを削除
header_remove('X-Powered-By');

// または全てのヘッダを削除してからレスポンスを付加
// header_remove();
  • header_remove()を使うと、スクリプト内でのみ有効です。
  • より完全な対策とするならphp.iniと合わせて実施するのがよいです。

Laravelでの実施例

Laravelではミドルウェアで一括管理する方法があります。

<?php
// app/Http/Middleware/RemovePoweredByHeader.php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class RemovePoweredByHeader
{
    public function handle(Request $request, Closure $next)
    {
        $response = $next($request);
        $response->headers->remove('X-Powered-By');
        return $response;
    }
}

これをapp/Http/Kernel.phpに追加します。

// app/Http/Kernel.php
protected $middleware = [
    // その他のミドルウェア
    \App\Http\Middleware\RemovePoweredByHeader::class,
];

その他注意すべきヘッダ情報

次のようなヘッダも、出力を削減することを検討するとよいです。

ヘッダ名解説削除方法
ServerWebサーバの種類 (Apache、Nginxなど)Webサーバの設定で無効化
X-AspNet-VersionASP.NETのバージョン情報Web.configで削除
X-Powered-By (Laravel)Laravelでは手動削除が必要ミドルウェアで削除

まとめ

  • PHPのX-Powered-Byを消すにはphp.iniexpose_php = Offにする
  • php.ini変更不可の場合はheader_remove()やLaravelのミドルウェアを使う
  • Server情報もレベルで露呈しないよう配慮する

セキュリティ安全性は、小さなことの続けで大きく変わります。 小さなリスクを一つ一つ削除していきましょう。

著者

Webエンジニア歴30年、フリーランスバックエンドエンジニア。

PHP歴約30年(Laravel 7年・FuelPHP 5年・CakePHP・自作FW)、
JavaScript歴約20年(React・Vue各4年)。
AWS(EC2 / CloudFront / RDS / API Gateway など)・
GCP(BigQuery)を使ったバックエンド開発を中心に、
複数の事業会社・受託案件でシステム設計から実装・運用まで担当しています。

PHPがバージョン4の時代から書いており、
Laravelが普及する前のフレームワーク乱立期も経験しています。
「昔はこう書いていたが今はこう」という変遷を肌で知っているエンジニアとして、
単なるコマンドの使い方だけでなく、なぜそうするのかの背景まで伝えることを意識して書いています。

このブログでは、実務で実際に詰まった箇所・調べたこと・気づいたことを
そのまま記事にしています。誰かの「詰まり」が解決するきっかけになれば幸いです。

千原 耕司をフォローする

役にたったと思ったら応援をお願いします m(._.)m

PHP
スポンサーリンク
シェアする
千原 耕司をフォローする
タイトルとURLをコピーしました