web-dev-qa-db-fra.com

Comment désactiver les URL "easter Egg" de PHP?

J'ai récemment découvert les soi-disant "easter Egg URLs" en PHP:

Ce sont les quatre chaînes QUERY que vous pouvez ajouter à la fin d'une page Web PHP pour afficher une image ou une page Web (quelque peu) cachée:

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

Celui-ci est le plus intéressant, et affiche une image "d'oeuf de Pâques" d'un lapin dans une maison (le lapin de Sterling Hughes, nommé Carmella), un chien brun dans l'herbe, un chien Scottish Terrier noir, un enfant bâclé à la main - logo php dessiné, de couleur crayon, un gars avec des gressins (qui ressemble à des crayons ou des frites) qui sortent de sa bouche comme un morse, ou un PHP logo d'éléphant.

enter image description here

D'autres comprennent:

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

J'ai été choqué de découvrir que cela fonctionne sur de nombreux sites Web, y compris le mien. Je pense que c'est idiot et je veux le désactiver, mais d'après ce que j'entends, la seule façon de le faire est dans php.ini avec expose_php = Off, Et cela ne peut pas être défini à l'exécution = avec ini_set().

Je n'ai pas d'accès direct à php.ini sur le serveur en direct. J'ai cependant compris comment désactiver le X-Powered-By en utilisant Header unset X-Powered-By dans .htaccess, ou header('X-Powered-By: ') dans le code PHP.

Existe-t-il un autre moyen de désactiver ces "oeufs de Pâques", ou dois-je faire changer ce paramètre dans le php.ini Principal (et est-ce bien la seule/bonne façon de désactiver ces URL)?

64
Wesley Murch

Une réécriture globale rapide HTACCESS pourrait regexer la chaîne exacte directement à partir de chaque URL, éliminant ainsi la seule partie amusante de PHP sans toucher au fichier ini ni avoir besoin d'une fonction au début de chaque fichier.

Je n'ai pas encore testé cela, mais cela devrait fonctionner:

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

Bien sûr, copiez simplement les 2 dernières lignes pour chacune des autres requêtes possibles, ou écrivez une expression rationnelle plus générique. Je ne suis pas bon avec regex. :)

Cette version couvre tout le plaisir des oeufs de Pâques et a été trouvée ici:

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]
32
DanRedux

dans 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

Cela permettra d'éliminer efficacement les œufs de Pâques

58
Ryan

Mise à jour: Ceci est supprimé dans PHP 5.5, notez comment ces liens ne fonctionnent plus sur php.net

http://phpsadness.com/sad/11

9
chiliNUT

Je ne suis pas sûr de votre cas, mais cela fonctionne pour mon site. J'espère que cela fonctionnera aussi pour votre site.

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

Bien sûr, copiez simplement les 2 dernières lignes pour chacune des autres requêtes possibles ou écrivez une expression rationnelle plus générique. Je ne suis pas bon avec regex. :)

0
Martin Cross