Maison développement back-end tutoriel php Plusieurs détails de sécurité courants liés à PHP

Plusieurs détails de sécurité courants liés à PHP

Jan 14, 2017 pm 01:39 PM
php php安全

Nous avons installé PHP manuellement. Le fichier de configuration par défaut de PHP se trouve dans /usr/local/apache2/conf/php.ini. Notre chose la plus importante est de configurer le contenu de php.ini afin que nous puissions exécuter PHP de manière plus sûre. . Les paramètres de sécurité dans l'ensemble de PHP visent principalement à empêcher les attaques de phpshell et d'injection SQL. Discutons-en lentement. Nous utilisons d'abord n'importe quel outil d'édition pour ouvrir /etc/local/apache2/conf/php.ini Si vous l'installez d'une autre manière, le fichier de configuration peut ne pas se trouver dans ce répertoire.

(1) Activer le mode sans échec de PHP

Le mode sans échec de PHP est un mécanisme de sécurité intégré très important qui peut contrôler certaines fonctions de PHP, telles que le système ( ),

contrôle également les autorisations de nombreuses fonctions d'opération de fichiers et n'autorise pas certains fichiers clés, tels que /etc/passwd,

mais le php.ini par défaut est Si le mode sans échec est pas activé, nous l'allumons :

safe_mode = on
Copier après la connexion

(2) Sécurité du groupe d'utilisateurs

Lorsque safe_mode est activé, safe_mode_gid est désactivé, puis le php script Le fichier est accessible et les utilisateurs du même groupe

peuvent également accéder au fichier.

Il est recommandé de le définir sur :

safe_mode_gid = off
Copier après la connexion

Si vous ne le définissez pas, nous ne pourrons peut-être pas exploiter les fichiers du répertoire de notre site Web serveur. Par exemple, nous devons

exploiter les fichiers lors de l'exploitation.

(3) Répertoire personnel pour exécuter des programmes en mode sans échec

Si le mode sans échec est activé mais que vous souhaitez exécuter certains programmes, vous pouvez spécifier le programme à exécuté. Répertoire principal :

safe_mode_exec_dir = D:/usr/bin
Copier après la connexion

Généralement, il n'est pas nécessaire d'exécuter un programme, il est donc recommandé de ne pas exécuter le répertoire du programme système. Vous pouvez pointer vers un répertoire,

. puis copiez le programme qui doit être exécuté. Dans le passé, par exemple :

safe_mode_exec_dir = D:/tmp/cmd
Copier après la connexion

Cependant, je recommande de n'exécuter aucun programme, vous pouvez alors pointer vers notre répertoire Web :

safe_mode_exec_dir = D:/usr/www
Copier après la connexion

(4) Inclus dans le fichier en mode sans échec

Si vous souhaitez inclure certains fichiers publics en mode sans échec, modifiez les options :

safe_mode_include_dir = D:/usr/www/include/
Copier après la connexion

En fait, généralement les fichiers inclus dans les scripts php sont déjà dans le programme lui-même. Une fois écrits, cela peut être paramétré en fonction de 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, ce qui peut empêcher les scripts PHP de l'accès aux

Fichiers auxquels il ne faut pas accéder limite les dommages de phpshell dans une certaine mesure. Nous pouvons généralement le configurer pour accéder uniquement au répertoire du site :

open_basedir = D:/usr/www
Copier après la connexion

(6) . Fermer les fonctions dangereuses

Si le mode sans échec est activé, l'interdiction des fonctions n'est pas nécessaire, mais nous la considérons toujours pour des raisons de sécurité. Par exemple,

nous pensons que nous ne voulons pas exécuter de fonctions php, notamment system() qui peut exécuter des commandes, ou des fonctions telles que

phpinfo() qui peuvent afficher des informations php, alors nous pouvez les désactiver :

disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
Copier après la connexion

Si vous souhaitez désactiver des opérations sur les fichiers et les répertoires, vous pouvez désactiver de nombreuses opérations sur les 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

Ce qui précède n'est qu'une liste de quelques fonctions de traitement de fichiers peu utilisées , vous pouvez également combiner la fonction de commande d'exécution ci-dessus avec cette fonction,

peut résister à la plupart des phpshells.

(7) Fermez la fuite des informations de version PHP dans l'en-tête http

Afin d'empêcher les pirates d'obtenir les informations de version PHP sur le serveur, nous pouvons fermer la fuite de ces informations dans l'en-tête http Header :

expose_php = Off
Copier après la connexion

Par exemple, lorsqu'un hacker telnet www.chinaz.com 80, il ne pourra pas voir les informations PHP.

(8) Fermer l'enregistrement des variables globales

Les variables soumises en PHP, y compris les variables soumises via POST ou GET, seront automatiquement enregistrées en tant que variables globales et peuvent directement accès,

est très dangereux pour le serveur, nous ne pouvons donc pas le laisser être enregistré en tant que variable globale, nous désactivons donc l'option d'enregistrement de la variable globale :

register_globals = Off
Copier après la connexion

Bien sûr , s'il est défini comme ceci, alors vous devez utiliser des méthodes raisonnables pour obtenir les variables correspondantes, comme l'obtention de la variable var soumise par GET,

puis vous devez utiliser $_GET['var'] pour l'obtenir , les programmeurs PHP devraient y prêter attention.

(9) Ouvrez magic_quotes_gpc pour empêcher l'injection SQL

L'injection SQL est un problème très dangereux Dans de petits cas, le backend du site Web sera envahi, et dans des cas plus graves. Dans certains cas, le serveur entier tombera.

Alors soyez prudent. Il y a un paramètre dans php.ini :

magic_quotes_gpc = Off
Copier après la connexion

Ceci est désactivé par défaut. S'il est activé, il convertira automatiquement les requêtes SQL soumises par l'utilisateur

Par exemple. convertir ' en ' Attendez, cela joue un rôle important dans la prévention de l'injection SQL. Par conséquent, nous vous recommandons de le définir sur :

magic_quotes_gpc = On
Copier après la connexion

(10) Contrôle des messages d'erreur

Généralement, PHP génère une erreur lorsqu'il n'est pas connecté à la base de données. ou dans d'autres circonstances. Généralement, le message d'erreur contiendra les informations de chemin du script PHP avant

ou l'instruction SQL de la requête. Ce type d'informations est dangereux s'il est fourni aux pirates, il est donc généralement recommandé. que les serveurs désactivent les invites d'erreur :

display_errors = Off
Copier après la connexion

Si vous souhaitez afficher les messages d'erreur, assurez-vous de définir le niveau d'affichage des erreurs, par exemple, affichez uniquement les informations au-dessus des avertissements :

error_reporting = E_WARNING & E_ERROR
Copier après la connexion

Bien sûr, je recommande toujours de désactiver les invites d'erreur.

(11) Journal des erreurs

Il est recommandé d'enregistrer les informations d'erreur après avoir désactivé display_errors pour faciliter la recherche de la raison du fonctionnement du serveur :

log_errors = On

Définissez également le répertoire dans lequel le journal des erreurs est stocké. Il est recommandé que le journal racine d'Apache soit stocké ensemble :

error_log = D:/usr/local/apache2/logs/php_error. .log

Remarque : Le fichier doit permettre à l'utilisateur et au groupe Apache d'avoir des autorisations en écriture.

Télécharger les privilèges MYSQL

Créer un nouvel utilisateur tel que mysqlstart

net user mysqlstart ****microsoft /add

net localgroup users mysqlstart / del

n'appartient à aucun groupe

Si MYSQL est installé dans d:mysql, donnez à mysqlstart les autorisations de contrôle total

puis définissez les propriétés du service de MYSQL dans le système service , dans les propriétés de connexion, sélectionnez cet utilisateur mysqlstart et entrez le mot de passe, OK.

Redémarrez le service MYSQL, puis MYSQL fonctionnera avec de faibles privilèges.

Si Apache est construit sur une plate-forme Windos, nous devons prêter attention à une autre chose. Apache fonctionne avec les autorisations système par défaut

C'est effrayant et met les gens très mal à l'aise. nous donnerons à Apache Réduire les autorisations.

net user apache ****microsoft /add

net localgroup users apache /del

ok Nous avons créé un utilisateur apche qui n'appartient à aucun groupe.

On ouvre le gestionnaire de l'ordinateur, on sélectionne les services, on clique sur les propriétés du service Apache, on sélectionne se connecter, on sélectionne ce compte, on remplit le compte et le mot de passe créés ci-dessus,

Redémarrer le service Apache, ok, Apache fonctionne avec de faibles autorisations.

En fait, nous pouvons également définir les autorisations de chaque dossier afin que l'utilisateur Apache ne puisse effectuer que ce que nous voulons qu'il fasse, et créer un utilisateur en lecture-écriture distinct pour chaque répertoire.

Il s'agit également d'une méthode de configuration populaire utilisée par de nombreux fournisseurs d'hébergement virtuel. Cependant, cette méthode est excessive lorsqu'elle est utilisée pour empêcher cela.

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Apr 06, 2025 am 12:02 AM

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

See all articles