![見出し画像](https://assets.st-note.com/production/uploads/images/150804240/rectangle_large_type_2_4e2aea7b927bddf8fc9052e0e5663104.png?width=1200)
HTTPレスポンスヘッダのセキュリティを高める
ブラウザの開発者ツールでレスポンスヘッダーを確認しました。
![](https://assets.st-note.com/img/1723705773229-98wStAj0S2.png?width=1200)
思いっきりOSとPHPのバージョンが表示されていました。
消し込む手順をお伝えします。
まず mod_headers モジュールが有効か確認をします。
httpd -M | grep headers
結果
headers_module (shared) ← 表示されたらOK
httpd.conf を開きます。
sudo vi /etc/httpd/conf/httpd.conf
ファイルの末尾に以下の行を追記します。
ServerSignature Off
ServerTokens Prod
Header unset X-Powered-By
Header set X-Content-Type-Options nosniff
Header always set X-Frame-Options "SAMEORIGIN"
ServerSignature Off は、エラーページなどに表示されるApacheのバージョン情報を無効にします。
ServerTokens Prod は、Server ヘッダーを「Apache」に簡略化し、詳細なバージョン情報を表示しないようにします。
Header unset X-Powered-By は、PHPのバージョン情報が含まれる X-Powered-By ヘッダーを削除します。
Header set X-Content-Type-Options nosniff は、XSS攻撃の対策のため情報の消し込みとは関係ないですが設定をしておきます。
SAMEORIGIN も情報の消し込みとは関係ないですが設定をしておきます。サイト内でページをフレームに表示する必要がある場合に、同じオリジンからのフレーミングを許可しつつ、他のオリジンからの攻撃を防ぐことができます。
次に php.ini を編集します。
sudo vi /etc/php.ini
以下の変更をします。
expose_php = On
↓
expose_php = Off
httpd を再起動します。
Rocky Linux は php-fpm を利用していると思うので、php-fpm も再起動します。
sudo systemctl restart httpd
sudo systemctl restart php-fpm
改めてレスポンスヘッダーを確認するとバージョン情報は消えました。nosniff と SAMEORIGIN も確認できました。
![](https://assets.st-note.com/img/1723707775734-TKql9Q0XwV.png?width=1200)
Server: Apache の情報を丸ごと削除したい場合は httpd.conf に以下の行を追記すれば良いようです。私はそこまでしませんでした。(ほとんどのサイトが Apache でしょうから、まぁよいかなと)
Header unset Server
この記事が気に入ったらサポートをしてみませんか?