2012-05-05 16 views
63

recente ho scoperto il cosiddetto "easter egg URLs" in PHP:Come posso disabilitare gli URL "easter egg" di PHP?

Questi sono i quattro stringhe di query è possibile aggiungere alla fine di una pagina web PHP per visualizzare un (un po ') la pagina immagine o web nascosta:

  1. ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

Questo è il più interessante, e visualizza un "uovo di Pasqua" i mago di un coniglio in una casa (coniglio di Sterling Hughes, Carmella), un cane marrone nell'erba, un cane Scottish Terrier nero, un bambino sciatto disegnato a mano, logo php color pastello, un ragazzo con grissini (simili a matite o patatine fritte) che escono dalla sua bocca come un tricheco o un logo dell'elefante PHP.

enter image description here

Altri includono:

  • ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 (PHP Logo)
  • ?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 (Zend logo)
  • (Credits PHP) ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

ero scioccato di scoprire che questo funziona su molti siti web, incluso il mio. Penso che sia idiota e voglio disabilitarlo, ma da quello che sento l'unico modo per farlo è in php.ini con expose_php = Off, ed è can't be set at runtime con ini_set().

Non ho accesso diretto a php.ini sul server live. Tuttavia, ho capito come disinserire l'intestazione X-Powered-By utilizzando Header unset X-Powered-By in .htaccess o header('X-Powered-By: ') nel codice PHP.

C'è qualche altro modo per disabilitare queste "uova di Pasqua", o devo cambiare questa impostazione nel principale php.ini (ed è proprio questo il modo corretto/solo per disabilitare questi URL)?

+8

Sono don' fare del male a nessuno, quindi perché preoccuparsi? – DanRedux

+62

Perché penso sia stupido ed espone il fatto che stai usando PHP. –

+2

Per come la vedo io, se vuoi usare un intero motore a cui le persone hanno investito molto tempo e tutto ciò che vogliono in cambio è lasciare alcune innocue uova di Pasqua lì dentro, allora perché no? : D È divertente. Scommetto che ti sei divertito anche solo a guardarli! – DanRedux

risposta

32

Una rapida riscrittura globale HTACCESS è in grado di regexare la stringa esatta da ogni URL eliminando così l'unica parte divertente di PHP senza toccare il file ini, né richiedere una funzione all'inizio di ogni file.

non hanno ancora testato, ma questo dovrebbe funzionare:

RewriteEngine On 
RewriteCond %{QUERY_STRING} \PHPE9568F36-D428-11d2-A769-00AA001ACF42\ [NC] 
RewriteRule .* - [F] 

Naturalmente, basta copiare le ultime 2 righe per ciascuna delle altre query possibili, o scrivere una regex più generico. Non sto bene con regex. :)

Questa versione copre tutto il divertimento uovo di Pasqua ed è stato trovato here:

RewriteEngine On 
RewriteCond %{QUERY_STRING} \=PHP[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} [NC] 
RewriteRule .* - [F] 
+0

Qualche indizio su come esattamente farlo? Posso cercarlo da solo, ma se puoi fornire un esempio per sbarazzarti di uno degli URL che sarebbe di grande aiuto. Qualche idea sul fatto che la direttiva ini che ho citato sia effettivamente corretta e si libererebbe di queste cose? –

+0

Grazie per l'idea, questa particolare regola mi dà "errore interno del server", ma il link dell'altro commento (che ora è stato eliminato) ne aveva uno che sembrava funzionare: https://akeeba.assembla.com/code/master-htaccess /git/nodes/htaccess.txt Sotto "Disallow PHP Easter Eggs" Sentiti libero di aggiungerlo al tuo post per gli altri! –

+0

Sì, la direttiva ini nasconde tutti i segni della vita di PHP, inclusi i 5 URL di easter egg (i 4 che hai menzionato e 1 che esegue una query MySQL con il parametro GET "query" se MySQL è installato). – DanRedux

58

in php.ini

; Decides whether PHP may expose the fact that it is installed on the server 
; (e.g. by adding its signature to the Web server header). It is no security 
; threat in any way, but it makes it possible to determine whether you use PHP 
; on your server or not. 
; http://php.net/expose-php 
expose_php = Off 

Questo eliminerà efficacemente le uova di Pasqua

+5

L'OP ha detto "Non ho accesso diretto a php.ini sul server live." – Raz

+42

Sebbene non risponda alla domanda dell'OP, è comunque utile per le persone che incappano in questa domanda che hanno accesso a php.ini. – Wodin

+3

Se non si ha accesso a php.ini, è necessario segnalarlo all'amministratore di sistema per disattivare questa impostazione in un ambiente di produzione. Quindi raccomanderò questa risposta. –

Problemi correlati