Maison >développement back-end >Problème PHP >Explication détaillée des techniques d'évasion et de restauration en PHP

Explication détaillée des techniques d'évasion et de restauration en PHP

PHPz
PHPzoriginal
2023-04-04 16:15:49942parcourir

L'échappement et la restauration en PHP sont des concepts très importants. En effet, lors du développement d'applications Web, les utilisateurs soumettront des données au serveur. Les données peuvent contenir des caractères spéciaux, et ces caractères spéciaux peuvent poser des problèmes de sécurité. Par conséquent, nous devons échapper et restaurer ces caractères spéciaux pour garantir la sécurité des données. Cet article présentera les techniques d'échappement et de restauration en PHP.

1. Technologie d'échappement PHP

La méthode d'échappement en PHP se fait via une fonction : addslashes(). Ce qu'on appelle "l'échappement" signifie effectuer un traitement spécial sur certains caractères spéciaux afin de ne pas les traiter comme des caractères ordinaires. Ces caractères spéciaux sont généralement des guillemets, des barres obliques inverses, etc. Lorsque ces caractères apparaissent dans certaines commandes ou instructions, ils seront utilisés comme délimiteurs de commandes ou d'instructions, conduisant à des erreurs de programme ou à des attaques par injection. addslashes()。所谓“转义”,就是将一些特殊字符进行特殊处理,以免把它当做普通字符来处理。这些特殊字符一般是一些引号、反斜杠等,当这些字符出现在某些命令或语句中时,就会被当做命令或语句的界定符,从而导致程序出错或注入攻击。

addslashes()函数的作用就是在特殊字符前加上反斜杠来转义它们。比如:

$str = "This is John's book";
$str = addslashes($str);

输出结果为:“This is John's book”。可以看到,单引号被转换成了“’”,这样就防止了单引号被当作语句或命令的分隔符。同样的,反斜杆也被转义成了“”,这样就可以避免反斜杆在正则表达式中被解释为转义字符。

除了addslashes()函数之外,还有一些其他的转义函数,比如htmlentities()htmlspecialchars()。这两个函数的作用是把所有的HTML标记都转换成对应的实体。这是因为在HTML中,某些标记具有特殊的意义,如果不转义的话,可能导致页面出现问题。因此,使用这些函数可以保证我们的页面正常显示,避免出现任何问题。

二、php还原技术

在从用户处获取数据后,我们需要将其还原成原始的字符串。这就是还原技术。在PHP中,将转义的特殊字符还原成原始字符的函数有两个:stripslashes()html_entity_decode()。其中stripslashes()函数的作用是将特殊字符前的反斜杠去掉,从而还原字符串。比如:

$str = "This is John\'s book";
$str = stripslashes($str);

输出结果为:“This is John's book”。可以看到,单引号前面的反斜杠被去掉了,单引号还原成了原始的字符。

对于HTML实体,我们可以使用html_entity_decode()函数将其还原成原始的字符串。比如:

$str = "This is 40% discount";
$str = htmlentities($str);
$str = html_entity_decode($str);

输出结果为:“This is 40% discount”。可以看到,原始的字符串中包含了一个“%”符号,而在使用htmlentities()函数后,百分号被转换成了HTML实体“%25”。而在使用html_entity_decode()

addslashes()La fonction consiste à ajouter une barre oblique inverse avant les caractères spéciaux pour y échapper. Par exemple :

rrreee

Le résultat de sortie est : "Ceci est le livre de John". Comme vous pouvez le constater, les guillemets simples sont convertis en "'", ce qui empêche leur utilisation comme délimiteurs d'instructions ou de commandes. De même, la barre oblique inverse est également échappée dans "", ce qui empêche la barre oblique inverse d'être interprétée comme un caractère d'échappement dans les expressions régulières.

En plus de la fonction addslashes(), il existe d'autres fonctions d'échappement, telles que htmlentities() et htmlspecialchars(). La fonction de ces deux fonctions est de convertir toutes les balises HTML en entités correspondantes. En effet, en HTML, certaines balises ont une signification particulière et peuvent causer des problèmes sur la page si elles ne sont pas échappées. Par conséquent, l’utilisation de ces fonctions peut garantir que notre page s’affiche normalement et éviter tout problème. 🎜🎜2. Technologie de restauration PHP🎜🎜Après avoir obtenu les données de l'utilisateur, nous devons les restaurer dans la chaîne d'origine. C'est la technique de restauration. En PHP, il existe deux fonctions qui restaurent les caractères spéciaux échappés en caractères d'origine : stripslashes() et html_entity_decode(). La fonction stripslashes() est utilisée pour supprimer les barres obliques inverses avant les caractères spéciaux afin de restaurer la chaîne. Par exemple : 🎜rrreee🎜Le résultat de sortie est : "Ceci est le livre de John". Comme vous pouvez le constater, la barre oblique inverse devant le guillemet simple est supprimée et le guillemet simple est restauré au caractère d'origine. 🎜🎜Pour les entités HTML, nous pouvons utiliser la fonction html_entity_decode() pour la restaurer à la chaîne d'origine. Par exemple : 🎜rrreee🎜Le résultat de sortie est : "C'est 40 % de réduction". Comme vous pouvez le voir, la chaîne d'origine contient un symbole "%", et après avoir utilisé la fonction htmlentities(), le signe de pourcentage est converti en l'entité HTML "%25". Après avoir utilisé la fonction html_entity_decode(), %25 a été restauré au caractère d'origine "%". 🎜🎜3. Conclusion🎜🎜Les technologies d'échappement et de restauration en PHP sont très importantes. Elles peuvent nous aider à protéger la sécurité des applications Web et à éviter des problèmes inutiles. Lors de l'écriture de code, nous devons apprendre à utiliser ces technologies correctement, et lors du traitement des données soumises par les utilisateurs, nous devons y échapper pour éviter des attaques telles que l'injection SQL. 🎜

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