PHPやLaravelのアプリを公開する際、セキュリティ安全性は非常に重要です。 その中でもHTTPヘッダに自動追加されるX-Powered-By
は、アプリの実装技術を露呈してしまうため、攻撃者に目をつけられやすいリスクになります。
本記事では、PHPでX-Powered-By
を消す方法を解説し、その他にも注意すべきヘッダ情報とその対策を紹介します。
PHPでX-Powered-Byを削除する方法
php.iniで削除する
最も正統的で効果的な方法はphp.iniで削除することです。
; php.iniに追加または変更
expose_php = Off
expose_php
をOff
にすることで、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,
];
その他注意すべきヘッダ情報
次のようなヘッダも、出力を削減することを検討するとよいです。
ヘッダ名 | 解説 | 削除方法 |
---|---|---|
Server | Webサーバの種類 (Apache、Nginxなど) | Webサーバの設定で無効化 |
X-AspNet-Version | ASP.NETのバージョン情報 | Web.configで削除 |
X-Powered-By (Laravel) | Laravelでは手動削除が必要 | ミドルウェアで削除 |
まとめ
- PHPの
X-Powered-By
を消すにはphp.ini
でexpose_php = Off
にする - php.ini変更不可の場合は
header_remove()
やLaravelのミドルウェアを使う - Server情報もレベルで露呈しないよう配慮する
セキュリティ安全性は、小さなことの続けで大きく変わります。 小さなリスクを一つ一つ削除していきましょう。
コメント