Maison > Article > développement back-end > Comment renforcer encore la sécurité dans l’environnement PHP ? Introduction aux méthodes pour améliorer la sécurité de l'environnement PHP
Le contenu de cet article porte sur la manière de renforcer davantage la sécurité dans l'environnement PHP ? L'introduction de méthodes pour améliorer la sécurité de l'environnement PHP a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère que cela vous sera utile.
Une fois l'application PHP déployée, les développeurs ou le personnel d'exploitation et de maintenance doivent toujours prêter attention aux nouvelles sur les vulnérabilités PHP, mettre à niveau la version PHP et effectuer un renforcement de la sécurité sur l'environnement PHP. Cet article vous présentera comment rendre votre site Web plus fort et plus sécurisé du point de vue de la sécurité WEB.
1. Activer le mode sans échec de PHP
Le mode sans échec fourni par l'environnement PHP est un mécanisme de sécurité intégré très important. Le mode sans échec de PHP peut contrôler efficacement certaines fonctions de l'environnement PHP (. telle que la fonction system ()), contrôle les autorisations sur la plupart des fonctions d'exploitation de fichiers et n'autorise pas la modification de certains fichiers clés (tels que /etc/passwd). Cependant, le fichier de configuration php.ini par défaut n'active pas le mode sans échec.
Vous pouvez activer le mode sans échec PHP en modifiant le fichier de configuration php.ini :
safe_mode = on
2. Sécurité du groupe d'utilisateurs
Lorsque vous activez le mode sans échec, si le safe_mode_gid est désactivée, les scripts PHP peuvent accéder au fichier et les utilisateurs du même groupe d'utilisateurs peuvent également accéder au fichier.
Par conséquent, il est recommandé de désactiver cette option :
safe_mode_gid = off
Remarque : Ce paramètre d'option s'applique uniquement aux systèmes d'exploitation Linux.
Si vous ne définissez pas ce paramètre, vous ne pourrez peut-être pas utiliser les fichiers dans le répertoire du site Web du serveur.
3. Répertoire personnel pour exécuter des programmes en mode sans échec
Si vous souhaitez exécuter certains programmes après avoir activé le mode sans échec, vous pouvez spécifier le répertoire personnel dans lequel le programme doit être exécuté, par exemple. :
safe_mode_exec_dir = /usr/bin
De manière générale, si vous n'avez besoin d'exécuter aucun programme, il est recommandé de ne pas spécifier le répertoire d'exécution des programmes système. Vous pouvez spécifier un répertoire puis copier le programme qui doit être exécuté dans ce répertoire, par exemple :
safe_mode_exec_dir = /temp/cmd
Cependant, il est recommandé de n'exécuter aucun programme. Dans ce cas, il vous suffit de pointer le répertoire d'exécution vers le répertoire de la page Web :
safe_mode_exec_dir = /usr/www
Remarque : Le chemin d'accès au répertoire d'exécution est soumis au chemin du répertoire de votre actuel système opérateur.
4. Inclure les fichiers en mode sans échec
Si vous devez inclure certains fichiers publics en mode sans échec, il vous suffit de modifier les options suivantes :
safe_mode_include_dir = /usr/www/include/
Généralement , les fichiers inclus dans le script PHP ont été écrits dans le programme et peuvent être paramétrés en fonction de vos besoins spécifiques.
5. Contrôlez les répertoires auxquels les scripts PHP peuvent accéder.
Utilisez l'option open_basedir pour contrôler que les scripts PHP ne peuvent accéder qu'aux répertoires spécifiés. Cela peut empêcher les scripts PHP d'accéder aux fichiers auxquels il ne faut pas accéder. dans une certaine mesure. Réduit les méfaits de phpshell. Dans des circonstances normales, il peut être configuré pour accéder uniquement au répertoire du site :
open_basedir = /usr/www
6. Désactivez les fonctions dangereuses
Si vous activez le mode sans échec, vous n'avez pas besoin de définir l'interdiction de fonction. , mais pour des raisons de sécurité, il est recommandé d'effectuer les réglages appropriés. Par exemple, si vous ne souhaitez pas exécuter de fonctions PHP qui exécutent des commandes, notamment system(), et des fonctions telles que phpinfo() qui peuvent afficher des informations PHP, vous pouvez interdire ces fonctions via les paramètres suivants :
disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl
Si vous souhaitez interdire les opérations sur des fichiers et des répertoires, vous pouvez désactiver les opérations suivantes liées aux fichiers.
disable_functions = chdir, chroot, dir, getcwd, opendir, readdir, scandir, fopen, unlink, delete, copy, mkdir, rmdir, rename, file, file_get_contents, fputs, fwrite, chgrp,chmod, chown
Remarque : Les paramètres ci-dessus ne répertorient que certaines des fonctions de traitement de fichiers les plus couramment utilisées. Vous pouvez également combiner les fonctions de commande d'exécution ci-dessus avec ces fonctions de traitement de fichiers pour contrecarrer la plupart. menaces phpshell.
7. Désactivez la fuite des informations de version PHP dans les en-têtes HTTP
Afin d'empêcher les pirates d'obtenir les informations de version PHP sur le serveur, vous pouvez empêcher la fuite de ces informations dans HTTP. contenu de l'en-tête :
expose_php = off
Après avoir défini cela, les pirates ne pourront pas voir les informations de version de PHP lorsqu'ils exécutent telnet 9e6c6f86673efa96e9f4645ec38e5f75
8. Désactiver l'enregistrement des variables globales
Les variables soumises dans l'environnement PHP, y compris les variables soumises à l'aide de la commande POST ou GET, seront automatiquement enregistrées en tant que variables globales et seront directement accessibles. Ceci est très dangereux pour votre serveur, il est donc recommandé de désactiver l'option d'enregistrement des variables globales et d'interdire l'enregistrement des variables soumises en tant que variables globales.
register_globals = off
Remarque : Ce paramètre d'option a été supprimé dans PHP 5.3 et versions ultérieures.
Bien sûr, si cela est défini, des méthodes raisonnables doivent être utilisées pour obtenir les variables correspondantes. Par exemple, pour obtenir la variable var soumise par la commande GET, vous devez utiliser la commande $_GET['var']
pour l'obtenir. Vous devez y prêter attention lors de la conception de programmes PHP.
9.Protection contre les injections SQL
L'injection SQL est un problème très dangereux, qui peut provoquer l'invasion du backend du site Web, voire l'effondrement de l'ensemble du serveur. L'option
magic_quotes_gpc
est désactivée par défaut. Si cette option est activée, PHP convertira automatiquement les requêtes SQL soumises par les utilisateurs (par exemple, convertir ' en ', etc.), ce qui est très efficace pour empêcher les attaques par injection SQL, il est donc recommandé de définir cette option. à :
magic_quotes_gpc = on
Remarque : Ce paramètre d'option a été supprimé dans PHP 5.4.0 et les versions ultérieures.
Il est donc préférable d'utiliser le prétraitement PDO pour traiter les requêtes SQL.
10.错误信息控制
一般 PHP 环境在没有连接到数据库或者其他情况下会有错误提示信息,错误信息中可能包含 PHP 脚本当前的路径信息或者查询的 SQL 语句等信息,这类信息如果暴露给黑客是不安全的,因此建议您禁止该错误提示:
display_errors = Off
如果您确实要显示错误信息,一定要设置显示错误信息的级别。例如,只显示警告以上的错误信息:
error_reporting = E_WARNING & E_ERROR
注意: 强烈建议您关闭错误提示信息。
11.错误日志
建议您在关闭错误提示信息后,对于错误信息进行记录,便于排查服务器运行异常的原因:
log_errors = On
同时,需要设置错误日志存放的目录,建议您将 PHP 错误日志与 Apache 的日志存放在同一目录下:
error_log = /usr/local/apache2/logs/php_error.log
注意: 该文件必须设置允许 Apache 用户或用户组具有写的权限。
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!