Mode de sécurité PHP sécurisé

黄舟
Libérer: 2023-03-05 20:42:02
original
1217 Les gens l'ont consulté



Mode sans échec

Le but de l'option safe_mode de PHP est de résoudre certains des problèmes décrits dans ce chapitre. Cependant, il est architecturalement incorrect de résoudre ce type de problème au niveau PHP, comme indiqué dans le manuel PHP (http://www.php.cn/).

Lorsque le mode sans échec est en vigueur, PHP vérifiera le propriétaire du fichier lu (ou exploité) par le script en cours d'exécution pour s'assurer qu'il est le même que le propriétaire du script. Bien que cela protège contre de nombreux exemples de ce chapitre, cela n'affecte pas les programmes écrits dans d'autres langages. Par exemple, utilisez un script CGI écrit en Bash : >

L'analyseur Bash se soucie-t-il ou même vérifie-t-il la chaîne de configuration dans le fichier de configuration PHP pour activer le mode sans échec ? Bien sûr que non. De même, les autres langages pris en charge par le serveur, comme Perl, Python, etc., ne s'en soucieront pas. Tous les exemples de ce chapitre peuvent être facilement adaptés à d’autres langages de programmation.

 #!/bin/bash
 
  echo "Content-Type: text/plain"
  echo ""
  cat /home/victim/inc/db.inc
Copier après la connexion

Un autre problème typique est que le mode sans échec ne refuse pas l'accès aux fichiers appartenant au serveur WEB. En effet, un script peut être utilisé pour créer un autre script, et le nouveau script appartient au serveur WEB, il peut donc accéder à tous les fichiers appartenant au serveur WEB :

Le script ci-dessus crée le fichier suivant :

<?php
 
  $filename = &#39;file.php&#39;;
  $script = &#39;<?php
 
  header(\&#39;Content-Type: text/plain\&#39;);
  readfile($_GET[\&#39;file\&#39;]);
 
  ?>&#39;;
 
  file_put_contents($filename, $script);
 
  ?>
Copier après la connexion


Puisque le fichier a été créé par le serveur Web, son propriétaire est le serveur Web (Apache est généralement exécuté en tant qu'utilisateur personne) :

 <?php
 
  header(&#39;Content-Type: text/plain&#39;);
  readfile($_GET[&#39;file&#39;]);
 
  ?>
Copier après la connexion


Par conséquent, ce script peut contourner de nombreuses mesures de sécurité fournies par le mode sans échec. Même si le mode sans échec est activé, un attaquant peut toujours afficher certaines informations telles que les informations de session enregistrées dans le répertoire /tmp car ces fichiers appartiennent au serveur Web (personne).

 $ ls file.php
  -rw-r--r--  1 nobody nobody 72 May 21 12:34
file.php
Copier après la connexion

Le mode sans échec de PHP joue un certain rôle et peut être considéré comme un mécanisme de défense en profondeur. Cependant, il n'offre qu'une protection médiocre et aucune autre mesure de sécurité n'est proposée dans ce chapitre pour le remplacer.

Ce qui précède est le contenu du mode de sécurité PHP. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php). .cn) !

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal