La vulnérabilité au niveau de l'application qui pourrait éventuellement permettre aux attaquants de tenter d'effectuer plusieurs types d'attaques malveillantes telles qu'une attaque par traversée de chemin, une injection de code, un déni de service d'application, une injection SQL, etc. est appelée injection d'objet PHP ou La désérialisation PHP et la cause de cette vulnérabilité sont une entrée mal nettoyée fournie par l'utilisateur à la fonction unserialize() en PHP et les attaquants peuvent injecter des objets PHP arbitraires dans une application en passant des chaînes qui sont sérialisées ad hoc via le vulnérable unserialize( ) et cette vulnérabilité dans PHP conduit à l'exécution de code à distance.
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Syntaxe
La syntaxe pour déclarer la fonction serialize() en PHP est la suivante :
unserialize(value);
où valeur est la valeur à désérialiser qui peut éventuellement conduire à une injection d'objet.
Le fonctionnement de l'injection d'objets en PHP est le suivant :
Voici les exemples donnés ci-dessous :
Programme PHP pour illustrer l'injection d'objets pour convertir une valeur donnée sous forme de séquence de bits afin qu'elle puisse être stockée n'importe où, puis la désérialiser à l'aide de la fonction unserialize() :
Code :
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("Welcome", "to", "PHP")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Sortie :
Dans le programme ci-dessus, le tableau de données à sérialiser est transmis à la fonction de sérialisation et la chaîne renvoyée est stockée dans une variable appelée valeur. Ensuite, la chaîne renvoyée par la fonction serialize() est affichée comme sortie à l'écran. Ensuite, les données sérialisées sont transmises via la fonction de désérialisation et le résultat est stocké dans une variable appelée résultat. Ensuite, les données non sérialisées sont affichées comme sortie à l'écran. Le résultat est affiché dans l'instantané ci-dessus.
Programme PHP pour illustrer l'injection d'objets pour convertir une valeur donnée sous forme de séquence de bits afin qu'elle puisse être stockée n'importe où, puis la désérialiser à l'aide de la fonction unserialize() :
Code :
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("Learning", "is", "fun")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Sortie :
Dans le programme ci-dessus, le tableau de données à sérialiser est transmis à la fonction de sérialisation et la chaîne renvoyée est stockée dans une variable appelée valeur. Ensuite, la chaîne renvoyée par la fonction serialize() est affichée comme sortie à l'écran. Ensuite, les données sérialisées sont transmises via la fonction de désérialisation et le résultat est stocké dans une variable appelée résultat. Ensuite, les données non sérialisées sont affichées comme sortie à l'écran. Le résultat est affiché dans l'instantané ci-dessus.
Programme PHP pour illustrer l'injection d'objets pour convertir une valeur donnée sous forme de séquence de bits afin qu'elle puisse être stockée n'importe où, puis la désérialiser à l'aide de la fonction unserialize() :
Code :
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("We", "love", "India")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Sortie :
Dans le programme ci-dessus, le tableau de données à sérialiser est transmis à la fonction de sérialisation et la chaîne renvoyée est stockée dans une variable appelée valeur. Ensuite, la chaîne renvoyée par la fonction serialize() est affichée comme sortie à l'écran. Ensuite, les données sérialisées sont transmises via la fonction de désérialisation et le résultat est stocké dans une variable appelée résultat. Ensuite, les données non sérialisées sont affichées comme sortie à l'écran. Le résultat est affiché dans l'instantané ci-dessus.
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!