Maison >développement back-end >tutoriel php >Introduction détaillée aux dix principaux points de sécurité PHP que les administrateurs Linux doivent connaître

Introduction détaillée aux dix principaux points de sécurité PHP que les administrateurs Linux doivent connaître

黄舟
黄舟original
2017-03-06 09:58:111082parcourir

PHP est l'un des langages de programmation de script les plus utilisés. La part de marché en dit long sur sa position dominante. Le fait que PHP 7 ait été lancé rend ce langage de programmation encore plus attractif pour les développeurs actuels. Malgré quelques changements, de nombreux développeurs sont sceptiques quant à l'avenir de PHP. L'une des raisons est la sécurité de PHP.

La sécurité de PHP est une préoccupation majeure pour les développeurs. Bien que PHP offre une sécurité solide de l’intérieur vers l’extérieur, il appartient aux développeurs d’implémenter correctement ces mécanismes de sécurité. Nous présenterons plusieurs points de sécurité PHP pour les administrateurs Linux dans cet article. Ces points vous aideront à sécuriser votre application web et à assurer son bon fonctionnement sur le long terme.

Avant de commencer, il est nécessaire de comprendre le système auquel nous avons affaire. À des fins de démonstration, nous utilisons Fedora. Cependant, ces points devraient s'appliquer aux versions d'Ubuntu ou à toute autre distribution Linux. Consultez le manuel de la distribution de votre système d'exploitation pour plus d'informations.

Examinons de plus près plusieurs fichiers clés de notre environnement système. Votre fichier doit ressembler ou correspondre à ce qui suit :

  • Serveur Web par défaut : Apache

  • DocumentRoot : /var/www/html

  • Fichier de configuration PHP : /etc/php.ini

  • Répertoire de configuration étendu : /etc/php.d/

  • Fichier de sécurité : /etc/php.d/security.ini

Ces conseils protégeront votre site Web contre différents types d'attaques courantes telles que l'injection SQL, XSS, la falsification de requêtes intersites, eval() et les attaques par téléchargement de fichiers. Une liste des attaques courantes peut être trouvée ici (https://www.sitepoint.com/top-10-php-security-vulnerabilities/).

1. Supprimez les modules inutiles.

PHP est livré avec des modules PHP intégrés. Ils sont utiles pour de nombreuses tâches, mais tous les projets n’en nécessitent pas. Entrez simplement la commande suivante pour afficher les modules PHP disponibles :

# php - m
Une fois que vous avez examiné la liste, vous pouvez désormais supprimer les modules inutiles. La réduction du nombre de modules permet d'améliorer les performances et la sécurité des applications Web sur lesquelles vous travaillez.

2. Limiter les fuites d'informations PHP.

Il est courant que les plateformes divulguent des informations critiques. Par exemple, PHP divulgue des informations telles que la version et le fait qu'il a été installé sur le serveur. Ceci peut être réalisé via la commande expose_php. Pour éviter les fuites, vous devez désactiver cette commande dans /etc/php.d/security.ini.

expose_php=Off
Si vous avez besoin de connaître la version et son statut, exécutez simplement une simple commande Curl sur l'adresse du site Web pour obtenir ces informations.

Curl - I http://www.livecoding.tv/index.php
La commande précédente renverra les informations suivantes :

HTTP/1.1 200 OK 
	
X-Powered-By: PHP/7.0.10  
	
Content-type: text/html; charset=UTF-8

3. Désactivez l'exécution de code à distance.

L'exécution de code à distance est l'une des vulnérabilités de sécurité courantes dans les systèmes de sécurité PHP. Par défaut, l'exécution de code à distance est activée sur votre système. La commande "allow_url_fopen" permet à des fonctions telles que les wrappers fopen require, include ou compatibles URL d'accéder directement aux fichiers PHP. L'accès à distance est obtenu grâce à l'utilisation de protocoles HTTP ou FTP, ce qui empêche le système de se défendre contre les vulnérabilités de sécurité par injection de code.

Afin de garantir que votre système est sûr, sécurisé et éloigné de l'exécution de code à distance, vous pouvez définir cette commande sur « Désactivé », comme indiqué ci-dessous :

Allow_url_fopen=Off 
allow_url_include=Off

4. Enregistrez les erreurs PHP.

Un autre moyen simple de renforcer la sécurité de votre application web est de ne pas afficher d’erreurs aux visiteurs. Cela garantira que les pirates ne peuvent pas du tout compromettre la sécurité du site Web. Il doit être modifié dans le fichier /etc/php.d/security.ini.

display_errors=Off
Maintenant, vous pensez peut-être : après avoir terminé cette étape, "Comment un développeur peut-il déboguer sans l'aide de messages d'erreur ?" Il leur suffit de définir la commande log_errors sur "On" dans le fichier security.ini.

log_errors=On  
	
error_log=/var/log/httpd/php_scripts_error.log

5. Contrôler raisonnablement les ressources.

Pour assurer la sécurité de votre application, il est important de contrôler les ressources. Pour garantir une exécution et une sécurité correctes, vous devez restreindre l'exécution des scripts PHP. De plus, il devrait y avoir une limite sur le temps passé à analyser les données de la demande. Si le temps d'exécution est contrôlé, d'autres ressources telles que la mémoire utilisée par le script doivent également être configurées en conséquence. Toutes ces métriques peuvent être gérées en éditant le fichier security.ini.

# set in seconds  
	
max_execution_time = 25  
	
max_input_time = 25  
	
memory_limit = 30M

6. Désactivez les fonctions PHP dangereuses

PHP est livré avec des fonctions utiles pour le développement, mais il existe également un grand nombre de fonctions qui peuvent être utilisées par les pirates pour pirater des applications Web. La désactivation de ces fonctions améliore la sécurité globale et garantit que vous n'êtes pas exposé à des fonctions PHP dangereuses.

Pour ce faire, vous devez d'abord éditer le fichier php.ini. Une fois dans le fichier, recherchez la commande Disable_functions et désactivez les fonctions dangereuses à l'intérieur. Pour ce faire, il vous suffit de copier/coller le code suivant.

disable_functions =exec,passthru,  
	
shell_exec,system,proc_open,popen,curl_exec,  
	
curl_multi_exec,parse_ini_file,show_source
Vous pouvez en savoir plus sur la désactivation des fonctions PHP dangereuses ici (http://www.php.cn/).

7. Téléchargez des fichiers.

如果你的应用程序不需要上传任何文件,禁用上传文件的功能有助于提高安全。想禁止用户上传文件,只需要编辑/etc/php.d/目录下的security.ini文件,将file_uploads命令设成OFF。

file_uploads=Off

8. 保持版本最新。

开发人员在24/7不间断地工作,给你使用的技术打上补丁。PHP也是一样。由于它有一个开源社区,补丁和修正版定期发布。更新版还为首日漏洞及其他安全漏洞提供了安全补丁。如果你注重应用程序的安全性,就要始终确保你的PHP解决方案是最新版本。另外,给其他相关技术打上最新的补丁可以确保最大限度的安全。

9.控制文件系统访问。

默认情况下,PHP可使用fopen()等函数来访问文件。open_basedir命令提供了访问。首先,始终要将open_basedir命令设成/var/www/html目录。将它设成其他任何目录会导致安全问题。

open_basedir="/var/www/html/"

10. 控制POST大小。

我们的最后一个PHP安全要点是控制POST大小函数。HTTP POST函数使用客户端的浏览器,将数据发送到Web服务器。比如说,用户可能上传证书,然后发送到Web浏览器以便处理。一切都运行顺畅,直到有一天黑客企图发送庞大的文件来耗尽服务器资源。这很可能会导致服务器崩溃或响应缓慢。为了保护服务器远离这个漏洞,就需要设置POST大小。POST大小可以在/etc/php.d/security.ini文件里面加以设置。

post_max_size=1k

结束语

安全是广大Web开发人员和Linux管理员最关注的问题之一。如果采取了上述要点,你势必可以加强开发环境和PHP Web应用程序方面的安全。要是你认为我们遗漏了重要的内容,欢迎留言补充。

以上就是详细介绍Linux管理员不可不知十大PHP安全要点的详情的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn