> Tech > Ne laissez pas une liberté totale aux script

Ne laissez pas une liberté totale aux script

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Sous certaines conditions, PHP peut lire le contenu à la fois à partir des dossiers locaux et d’Internet. Ainsi, les fonctions include() et readfile() peuvent fort bien lire des noms de fichiers locaux comme /reports/quaterly.xls et des URL à distance comme http://www. example.com/remotefile.html.

Ne laissez pas une liberté totale aux script

justify; « >
Avec une telle puissance en mains, il convient de réfléchir à ce dont vous avez vraiment besoin et à restreindre ce qui n’est pas vraiment nécessaire. Ce genre de précaution accroît la protection contre des scripts dangereux imprévus et contre les chausse-trappes du réseau. php.ini contient des options qui restreignent les ressources auxquelles un script peut accéder.

En voici la liste : allow_url_include (par défaut : Off ; valeur recommandée : Off). Le réglage Off empêche vos applications d’exécuter (« d’inclure ») du code situé sur des serveurs distants. Normalement, les commandes telles que include() et require() peuvent inclure du code non seulement à partir du serveur local mais aussi à partir d’un distant, via un URL. Le danger du réglage On est que vous pourriez vous retrouver en train d’exécuter le script distant d’un assaillant.

Allow_url_inclu de a été introduit dans PHP 5.2 (Zend Core 2.0). En mode Off, allow_url_fopen est plus restrictif que allow_ url_include, empêchant même les applications de lire les fichiers distants via l’URL. Choisissez Off si l’application n’a pas besoin d’ouvrir d’autres URL, ou si vous pouvez remplacer l’extension cURL qui lit les URL à distance plus sûrement que les commandes natives.

open_basedir (par défaut : autoriser l’ouverture de tous les fichiers ; valeur recommandée : les dossiers dont votre application a besoin). Quand open_basedir est spécifiée avec une liste de dossiers, les commandes telles que readfile() et fopen() pourront accéder aux fichiers uniquement dans les dossiers spécifiés.

De ce fait, les scripts ne peuvent pas lire des données sensibles ni modifier des fichiers dans d’autres zones. Quand de multiples dossiers sont spécifiés, ils doivent être séparés par un signe deux-points (bien que les systèmes Windows utilisent un point-virgule). Par exemple open_basedir = /tmp/:/www/zendcore/htdocs/:/reports/ limitera les applications pour qu’elles ne puissent accéder qu’aux données des dossiers /tmp, /www/zendcore/htdocs, et /reports.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010