Maison  >  Article  >  développement back-end  >  PHP+ ferme le flux de sortie : une mesure importante pour assurer la sécurité du fonctionnement du programme

PHP+ ferme le flux de sortie : une mesure importante pour assurer la sécurité du fonctionnement du programme

PHPz
PHPzoriginal
2023-04-21 09:07:10686parcourir

Dans le processus de développement PHP, la sécurité a toujours été un problème auquel nous devons prêter attention. Lors de l'écriture de programmes, nous utilisons souvent divers moyens pour empêcher les attaques de pirates et garantir la sécurité des données des utilisateurs. La fermeture du flux de sortie est l'une des mesures de sécurité les plus couramment utilisées.

1. Qu'est-ce qui ferme le flux de sortie

Dans les programmes PHP, le contenu de sortie est souvent envoyé au navigateur du client ou à un autre terminal via des fonctions telles que echo, print, var_dump, etc. Fermer le flux de sortie signifie fermer le flux de sortie pendant l'exécution du programme, empêchant ainsi les messages d'erreur inutiles et même le code malveillant d'être envoyés au navigateur et améliorant la sécurité du programme.

2. Pourquoi devriez-vous fermer le flux de sortie ? Pour empêcher les attaques de pirates informatiques, certains attaquants peuvent injecter du code malveillant via l'URL pour obtenir des informations utilisateur importantes, modifier des données, etc. Cependant, si le flux de sortie est fermé, les pirates ne pourront pas obtenir les informations de sortie de l'application et ne pourront pas exploiter ces vulnérabilités.

  1. Prévenir les fuites d'informations sur le projet

Parfois, nous incluons des informations sensibles dans la sortie, telles que la configuration de la base de données, les informations sur les bogues, etc. Pour un attaquant, ces informations peuvent devenir un point faible de l'attaque, donc la fermeture du flux de sortie peut protéger la sécurité du système et empêcher la fuite d'informations importantes.

  1. Améliorer les performances du programme

La fermeture du flux de sortie peut réduire la quantité de données générées par le système, augmentant ainsi la vitesse d'exécution du programme et réduisant la charge sur le serveur. Ceci est particulièrement important pour les programmes avec des volumes d'accès importants ou des cycles d'exécution longs.

    3. Comment fermer le flux de sortie
  1. PHP fournit une variété de méthodes pour fermer le flux de sortie. Nous les présenterons séparément ci-dessous.

Méthode 1 : Utilisez le fichier php.ini

Dans le fichier de configuration php.ini fourni avec PHP, il y a un élément de configuration : output_buffering. Si cette valeur est définie sur On, toutes les sorties du programme seront d'abord écrites dans le cache et ne seront pas sorties tant que le script n'est pas exécuté, ce qui équivaut à fermer le flux de sortie. Ceci peut être réalisé en ajoutant les lignes de code suivantes au fichier de configuration PHP :

    output_buffering = On;
  1. output_handler = ob_gzhandler;

Méthode 2 : Utiliser la fonction intégrée PHP ob_start()


Cette fonction peut ouvrez un tampon de sortie. Et insérez toute la sortie du programme dans ce tampon. Une fois l'exécution terminée, le tampon peut être vidé et tout le contenu du programme peut être sorti. Lors de l'effacement de ce tampon, vous pouvez choisir les deux méthodes suivantes :

    flush() : afficher directement le contenu du tampon, puis effacer le tampon.
  1. ob_end_flush() : Cette fonction affichera d'abord tout le contenu du tampon, puis effacera le tampon.
Ce qui suit est un exemple de code :

ob_start();
echo "Hello, world!";

$output=ob_get_contents(); //Récupère les données dans le tampon, mais ne les efface pas the buffer

ob_end_clean(); //Effacer le pool de tampons

echo $output;

?>


Méthode 3 : Utiliser la fonction intégrée PHP header()


la fonction header() est souvent utilisée pour envoyer du HTTP informations d'en-tête au navigateur. Mais elles peuvent également être utilisées pour fermer le flux de sortie. En développement réel, il existe deux façons d'y parvenir :

    header("Content-type: text/html; charset=utf-8");
  1. header("HTTP/1.1 200 OK"); -Longueur : 0');
ou :

header("HTTP/1.1 200 OK");//Fermer la connexion



Méthode 4 : Utiliser la configuration Apache/nginx fichier

Dans le serveur Apache, nous pouvons fermer le flux de sortie en modifiant le fichier .htaccess. Sur le serveur nginx, nous pouvons y parvenir grâce aux fichiers de configuration.


Ajoutez le code suivant dans le fichier .htaccess :

    php_value output_buffering On ;
  1. Ajoutez le contenu suivant dans le fichier de configuration nginx pour réaliser la configuration :

emplacement ~ .php$ {

fastcgi_pass   127.0.0.1:9000;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 4k;
fastcgi_buffers 4 4k;
fastcgi_busy_buffers_size 8k;
fastcgi_read_timeout 300;
fastcgi_send_timeout 300;
fastcgi_connect_timeout 300;
fastcgi_buffering on; #开启缓冲池

}

4. Remarque Important

1. Pendant le développement, vous devez soigneusement déterminer si vous devez fermer le flux de sortie. S'il est surutilisé, cela peut entraîner certaines difficultés dans la maintenance du projet.

2. La fermeture du flux de sortie doit être effectuée à l'entrée du programme, sinon la sécurité du programme ne peut pas être garantie.

3. La fermeture du flux de sortie peut avoir un certain impact sur les performances du programme et doit être envisagée de manière globale.

En bref, la fermeture du flux de sortie est l'une des mesures importantes pour garantir la sécurité du fonctionnement du programme PHP. Les développeurs doivent bien comprendre ses principes et ses méthodes de mise en œuvre, et les appliquer de manière flexible dans les projets réels pour garantir la sécurité des données utilisateur.

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!

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