Il est évident que PHP + MySQL + Apache est une technologie Web très populaire. Cette combinaison est puissante, évolutive et est toujours libre. Cependant, les paramètres par défaut de PHP ne conviennent pas aux sites Web déjà en ligne. Ci-dessous, nous pouvons améliorer la stratégie de sécurité PHP en modifiant le fichier de configuration par défaut!
0x01: désactiver la fonction de traitement des fichiers URL distante
Comme la fonction de traitement de fichiers de FOPEN, qui accepte les paramètres de règlement du fichier (par exemple: fopen ('http: //www.yoursite.com' ,'r')).), Cette fonction peut facilement accéder aux ressources distantes. Cependant, il s'agit d'une menace de sécurité très importante. La désactivation de cette fonction pour limiter la fonction du fichier est un bon choix. Effectuer les modifications suivantes dans le fichier php.ini:
La copie de code est la suivante:
allow_url_fopen = off
0x02: désactiver l'enregistrement des variables globales
Dans les versions avant 4.2.0, PHP a utilisé des variables globales comme entrée. Cette fonction est appelée registre_globals. Dans les applications Web, il a causé de nombreux problèmes de sécurité car il permet aux attaquants de faire fonctionner facilement des variables globales dans certains cas. Heureusement, la fonction en 4.2.0 est désactivée par défaut. C'est très dangereux. Cette fonction doit être désactivée en toutes circonstances. Si certains scripts nécessitent cette fonctionnalité, il existe une menace de sécurité potentielle à ce script. Modifiez pnp.ini pour désactiver cette fonction:
La copie de code est la suivante:
registre_globals = off
0x03: Opérations de lecture et d'écriture de PHP restreintes
Dans de nombreux processus de développement Web, les scripts PHP doivent lire et écrire des opérations dans le système de fichiers local, tel que / var / www / htdocs / fichiers. Afin d'améliorer la sécurité, vous pouvez modifier les autorisations de lecture et d'écriture des fichiers locaux:
La copie de code est la suivante:
open_basedir = / var / www / htdocs / fichiers
0x04: limite de pose
Limiter le temps d'exécution de PHP, l'utilisation de la mémoire, les données de publication et de téléchargement est la meilleure stratégie, et la configuration suivante peut être effectuée:
La copie de code est la suivante:
max_execution_time = 30; Temps d'exécution du script max
max_input_time = 60; Temps maximum passé à analyser l'entrée
Memory_limit = 16m; Mémoire maximale utilisée par un script
upload_max_filesize = 2m; Max Télécharger la taille du fichier
post_max_size = 8m; Taille maximale de post
0x05: désactiver les messages d'erreur et activer la journalisation
Dans les paramètres par défaut, PHP publiera un message d'erreur au navigateur. Ce paramètre par défaut est la configuration la plus raisonnable pendant le processus de développement des applications. Cependant, il peut également fuir certaines informations de sécurité à l'utilisateur, telles que le chemin d'installation et le nom d'utilisateur. Dans les sites Web qui ont été développés, il est préférable de désactiver le message d'erreur et de diffuser le message d'erreur dans le fichier journal.
La copie de code est la suivante:
display_errors = off
log_errors = sur
0x06: masquer le fichier php
Si le fichier PHP n'est pas masqué, nous pouvons obtenir la version du serveur PHP via diverses méthodes, par exemple: http://www.example.com/script.php?=phpb8b5f2a0-3c92-11d3-a3a9-4c7b08c10000
De toute évidence, nous ne voulons pas que les utilisateurs obtiennent directement la version PHP de votre serveur de sites Web. Heureusement, il y a un commutateur dans php.ini qui peut désactiver cette fonction:
La copie de code est la suivante:
exposer_php = off
0x07: Configuration en mode sûr
Par défaut, PHP peut être configuré en mode sans échec. Dans ce mode, Apache interdit l'accès aux fichiers, aux variables environnementales et aux programmes binaires. En mode sans échec, le plus gros problème est que seul le propriétaire du fichier peut accéder à ce fichier PHP. Si de nombreux développeurs développent conjointement ce programme, un tel cadre n'est pas réaliste. Lorsque vous devez accéder à un fichier PHP, vous devez modifier le propriétaire du fichier. Un autre problème est que d'autres programmes ne peuvent pas accéder à ces fichiers PHP. La configuration suivante peut modifier les autorisations du fichier vers un groupe d'utilisateurs plutôt qu'un seul utilisateur.
La copie de code est la suivante:
Safe_Mode = OFF
Safe_Mode_gid = sur
En activant Safe_MODE_GID, vous pouvez accéder aux fichiers PHP en utilisant ce groupe d'Apache. Le mode sûr est également très efficace pour prévenir l'exécution binaire, cependant, les développeurs souhaitent pouvoir exécuter certains fichiers binaires dans certaines situations spécifiques. Dans ces cas particuliers, vous pouvez mettre le fichier binaire dans un répertoire, par exemple (/ var / www / binaires), et vous pouvez faire les paramètres suivants:
La copie de code est la suivante:
Safe_Mode_exec_dir = / var / www / binaires
Enfin, via les paramètres suivants, vous pouvez accéder aux variables d'environnement du serveur, fournissant un préfixe "_" qui ne peut accéder aux variables d'environnement avec des préfixes spécifiés:
La copie de code est la suivante:
safe_MODE_ALLOWED_ENV_VARS = PHP_
0x08: restreindre l'accès public aux fichiers avec des noms de suffixe spécifiques
Pour des raisons de sécurité, de nombreux fichiers avec des noms de suffixes spécifiques ne sont pas accessibles par les utilisateurs publics. Par exemple, les fichiers avec du suffixe .inc contiennent des informations sensibles, telles que les informations de connexion MySQL. S'il n'y a pas de configuration appropriée, chaque utilisateur peut accéder à ce fichier de configuration. Afin d'améliorer la sécurité du site Web, vous devez configurer ce qui suit dans le fichier ..htaccess:
La copie de code est la suivante:
<FixMatch>
La commande permet, nier
Nier de tous
</ filesmatch>
0x09: Résumé
La configuration par défaut de PHP est pour les développeurs. Si le site Web est pour un grand nombre d'utilisateurs, il est recommandé de reconfigurer PHP.