web-dev-qa-db-fra.com

Possible d'afficher PHP code d'un site Web?

Est-il possible de visualiser les fichiers/codes php d'un autre site Web?

Ou pour reformuler la question, mes codes php peuvent-ils être consultés par quiconque, sauf pour ceux qui ont accès au fichier?

Si oui, comment puis-je éviter cela au mieux?

Ps: Server OS est Ubuntu 9.10 et PHP est 5+ (Apache2)

37
user188962

Un bogue ou une vulnérabilité de sécurité du serveur (Apache ou le moteur PHP), ou votre propre code PHP, pourrait permettre à un attaquant d'obtenir l'accès à votre code.

Par exemple, si vous avez un script PHP pour permettre aux gens de télécharger des fichiers et qu'un attaquant peut inciter ce script à télécharger certains de vos fichiers PHP, alors votre le code peut être divulgué.

Puisqu'il est impossible d'éliminer tous les bogues du logiciel que vous utilisez, si quelqu'un veut vraiment vouloir voler votre code et qu'il a suffisamment de ressources, il y a un une chance raisonnable qu'ils pourront.

Cependant, tant que vous gardez votre serveur à jour, une personne ayant un intérêt occasionnel n'est pas en mesure de voir la source PHP sauf s'il existe des vulnérabilités de sécurité évidentes dans votre code.

Lisez la section Sécurité du PHP comme point de départ pour garder votre code en sécurité.

43
Artelius

En utilisant des exploits ou sur des serveurs mal configurés, il pourrait être possible de télécharger votre PHP. Vous pouvez cependant soit obscurcir et/ou chiffrer votre code (en utilisant Zend Guard, Ioncube ou une application similaire) si vous voulez vous assurer que votre source ne sera pas lisible (pour être précis, l'obscurcissement en soi pourrait être inversé avec suffisamment de temps/ressources, mais je n'ai pas encore trouvé de décrypteur IonCube ou Zend Guard ...).

1
wimvds

Personne ne peut lire le fichier, sauf ceux qui y ont accès. Vous devez rendre le code lisible (mais non inscriptible) par le serveur Web. Si le gestionnaire de code php fonctionne correctement, vous ne pouvez pas le lire en demandant par nom au serveur Web.

Si quelqu'un compromet votre serveur, vous courez un risque. Assurez-vous que le serveur Web ne peut écrire qu'aux emplacements dont il a absolument besoin. Il y a quelques emplacements sous/var qui devraient être correctement configurés par votre distribution. Ils ne devraient pas être accessibles sur le Web./var/www ne doit pas être accessible en écriture, mais peut contenir des sous-répertoires écrits par le serveur Web pour un contenu dynamique. Les gestionnaires de code doivent être désactivés pour ces derniers.

Assurez-vous de ne rien faire dans votre code php qui puisse conduire à une injection de code. L'autre risque est la traversée de répertoire en utilisant des chemins contenant .. ou commençant par /. Apache devrait déjà être corrigé pour éviter cela quand il gère des chemins. Cependant, lorsqu'il exécute du code, y compris php, il ne contrôle pas les chemins. Évitez tout ce qui permet au client Web de transmettre un chemin de fichier.

0
BillThor