X-Powered-Byの削除


137
  1. PHPでX-Powered-Byヘッダーを削除するにはどうすればよいですか?私はApacheサーバーを使用しており、php 5.21を使用しています。5.21ではサポートされていないため、phpでheader_remove関数を使用できません。Header unset X-Powered-Byを使用しましたが、ローカルマシンでは機能しましたが、運用サーバーでは機能しませんでした。

  2. PHPがバージョン5.3未満のheader_remove()をサポートしていない場合、代替はありますか?


プロダクションのPHPバージョン:PHP / 5.2.13ローカルのPHPバージョン:PHP / 5.2.11プロダクションのApacheバージョン:Apache / 2.2.15(Unix)ローカルのApacheバージョン:Apache 2.0.63(MacでMAMPを使用)
Castor

イースターエッグにも注意してください。
Pacerier 2014

回答:


236

PHP.iniexpose_php設定によって制御されていると思います。

expose_php = off

PHPがサーバーにインストールされていることを(PHPがWebサーバーのヘッダーに署名を追加するなどして)公開するかどうかを決定します。決してセキュリティ上の脅威ではありませんが、サーバーでPHPを使用しているかどうかを判断することができます。

直接的なセキュリティリスクはありませんが、David Cが指摘するように、PHPの古い(そして場合によっては脆弱な)バージョンを公開することは、人々が攻撃しようとする誘いになるかもしれません。


30
「セキュリティ上の脅威ではありません」。これは、ホストされたサーバーで実行されている古いバージョンのphpには当てはまらない場合があります。ハッカーは過去のバージョンでよく文書化された「穴」を悪用できると聞いたことがあります。それは....この事実を隠すために優れている
デヴィッド・

14
「完全に最新の状態」であることは、誤検知です。情報をすべて無効にすることをお勧めします。昨日リリースされたバージョンがすでに脅威にさらされている可能性があり、アップグレードサイクルの積極性によっては、しばらくの間そうである可能性があります。それらを完全に推測し続ける方が良い。nginxのバージョンも含めて、できる限り隠します。
Mike Purcell

1
@デビッド、彼は何を意味することは、しないで追加すでに直面しているセキュリティ上の脅威に。
Pacerier 2014

7
X-Powered-Byヘッダーの不正な値を意図的に報告できます。たとえば、PHPを実行している場合、X-Powered-By:ASP.NETヘッダーを送信して、攻撃者がWebサーバー上のソフトウェア構成のIDを取得するのを遅くすることができます。攻撃をワイルドグースチェイスに送り、スキャンを遅くします。
Chaoix

3
@Pacerier、もちろんそれはセキュリティの脅威に追加されます。ハッカーは簡単な獲物を探して何千ものサイトをスキャンします...古いバージョンのときにこのヘッダーがあると、以前は無視されていたはずのサーバーがターゲットになるようになります。それは直接的な方法でセキュリティの脅威に追加されます。最新の状態を維持していても、まだ適用されていない更新がある短い時間枠で脅威に追加される可能性があります。
Nigel B. Peck


50

エクスポーズ_phpディレクティブを無効にしてPHPの対話をミュートできない場合(php.iniへのアクセスが必要)、ApacheのHeaderディレクティブを使用してヘッダーフィールドを削除できます。

Header unset X-Powered-By

3
私の運用サーバーでは動作しません。それは私のローカルマシンでも動作しています。なぜこれが起こっているのかについてのアイデアはありますか?
キャスター

@Castorローカルおよび本番マシンで使用しているサーバーのバージョンを教えてください。PHP設定に違いはありますか?
ペッカ

プロダクションのPHPバージョン:PHP / 5.2.13ローカルのPHPバージョン:PHP / 5.2.11プロダクションのApacheバージョン:Apache / 2.2.15(Unix)ローカルのApacheバージョン:Apache 2.0.63(MacでMAMPを使用)
Castor

1
@Castor:mod_headersは両方のサーバーで利用できますか?また、FileInfoをオーバーライドできますか(httpd.apache.org/docs/2.2/mod/core.html#allowoverrideを参照)?
ガンボ

@Gumboはい、mod_headersは両方のサーバーで使用できます。そして、はい、私はFileInfoをオーバーライドすることが許可されています。
Castor

24
if (function_exists('header_remove')) {
    header_remove('X-Powered-By'); // PHP 5.3+
} else {
    @ini_set('expose_php', 'off');
}

14

php.iniにアクセスできる場合は、を設定しexpose_php = Offます。


3
まあ、私はこれをphpコードから機能させました。header( "X-Powered-By:"); X-Powered-Byヘッダーを何も設定しないと削除されました。あなたの時間と提案をありがとう。
Castor


4

次のように、ヘッダーを送信する前にheader()呼び出しを追加してみてください:

header('X-Powered-By: Our company\'s development team');

php.iniのexposed_php設定に関係なく


0

この解決策は私にとってうまくいきました:)

スクリプトに以下の行を追加して確認してください。

Ngnix / Apacheなどのレベル設定は必要ない場合があります。

header("Server:");
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.