PHP'nin X-Powered-By başlığını gizleme

6 Cevap php

PHP, bu PHP sürümüne sahip X-Powered-By başlığı gönderir biliyorum.

Ben de bazı toplamlarını ekleyerek biliyorum, PHP'nin krediye erişim ve bazı rastgele görüntüler (more info here).

Ben de açabilirsiniz php.ini biliyorum expose_php = off.

Ama burada ben bir kaç sitelerinde yapmış bir şeydir ve bu kullanımı

header('X-Powered-By: Alex');

Ben başlıklarını görüntülemek, ben şimdi yerine PHP sürümü 'Alex' olduğunu görebilirsiniz. Benim sorum bu benim header() ulaşmadan önce bu (ilk önceki PHP başlığı gönderir, ve herhangi bir sniffer programı tarafından saptanabilir? Veya başlıkların PHP ile 'toplanan', before tarayıcısına geri gönderiliyor?

Bu arada, bu başlıklar PHP nasıl çalıştığını sadece merak, bilinmezlik tarafından güvenlik için değildir.

6 Cevap

PHP ilk çıkış deyimi ile karşılaşana kadar PHP, başlıklar gönderilmez.

Bu ilk <?php önce bir şey içerir.

Setcookie çıktı olmuştur şey sonra kullanmaya çalışırsanız bir uyarı atar gönderir nedeni de budur:

Warning: Cannot modify header information - headers already sent by (output started at /path/to/php/file.php:100) in /path/to/php/file.php on line 150

Çıktı uygun çıkış tamponlama komutu çalıştırmak kadar gönderilecektir olmayacak gibi output buffering, kullanımda ise bu hiçbiri geçerli olduğunu unutmayın.

Bkz Apache Tips & Tricks: Hide PHP version (X-Powered-By)

Ups… As we can see PHP adds its own banner:

X-Powered-By: PHP/5.1.2-1+b1…

Let’s see how we can disable it. In order to prevent PHP from exposing the fact that it is installed on the server, by adding its signature to the web server header we need to locate in php.ini the variable expose_php and turn it off.

Varsayılan olarak expose_php Açık olarak ayarlanır.

In your php.ini (based on your Linux distribution this can be found in various places, like /etc/php.ini, /etc/php5/apache2/php.ini, etc.) locate the line containing expose_php On and set it to Off:

expose_php = Off

After making this change PHP will no longer add it’s signature to the web server header. Doing this, will not make your server more secure… it will just prevent remote hosts to easily see that you have PHP installed on the system and what version you are running.

Eğer X-Powered-By başlık göndermek istemiyorsanız eğer php.ini içinde expose_php = Off ayarlayabilirsiniz.

PHP ilk (başlıklar hangi değerleri hangi dahil) her şeyi derler ve daha sonra çıkışı değil, tam tersi başlar.

PHP ayrıca kendi paskalya yumurtaları ile saptanabilir, burada bu konu hakkında okuyabilirsiniz: PHP Easter Eggs

Başlıkları Eğer durum başlığı gibi şeyler geçersiz böylece, geri tarayıcıya gönderilmeden önce PHP ile "tahsil" vardır. Bunu test etmek için yolu bir komut istemine gidin ve tipidir:

telnet www.yoursite.com 80
GET /index.php HTTP/1.1
[ENTER]
[ENTER]

Ve yanıt olarak gönderilen başlıklarını görürsünüz (etki sonra PHP sayfasının URL / index.php değiştirin.)

Sen wireshark gibi bir şey bir göz kolayca kendiniz kontrol edebilirsiniz.

Benim sorum bu benim header() ulaşmadan önce bu (ilk önceki PHP başlığı gönderir, ve herhangi bir sniffer programı tarafından saptanabilir? Veya başlıkları tarayıcıya geri gönderilmeden önce, PHP ile 'toplanır' vardır ?

Hayır, ilk önceki PHP başlığı göndermek değildir. Başlıkları ya PHP (bir parti olarak, tam olarak) gönderilen gönderilen veya edilmez. (Eğer ikinci parametre ile farklı bir şey belirtmek sürece) varsayılan olarak header Docs çağırmak aynı adla bir önceki başlığını değiştirir.

PHP başlıklarını toplamak olmasaydı Note:, bir tane değiştirmek mümkün olmaz.

Daha önce gönderilen değil gibi, bir sniffer programı ile saptanabilir değildir.

Yani evet, başlıklar PHP ile toplanır ve "gerçek" çıktı başlar (HTTP yanıt gövde) an gönderilir.

Hem de bakın headers_sent Docs .