Pour les développeurs PHP fréquents, la simple mention de REGISTER_GLOBALS évoque une réaction viscérale, semblable à une rencontre avec la peste. Mais pourquoi une aversion si intense envers ce paramètre particulier ?
Les dangers de REGISTER_GLOBALS
REGISTER_GLOBALS permet à toutes les variables transmises via GET ou POST d'être accessibles en tant que variables globales dans un script . Cette fonctionnalité apparemment anodine recèle une menace cachée.
L'accès à des variables non déclarées en PHP déclenche uniquement un avertissement, pas une erreur. Par conséquent, cela peut créer un terrain fertile pour des vulnérabilités insidieuses.
Un exemple illustratif
Considérez l'extrait de code suivant :
<code class="php"><?php // $debug = true; if ($debug) { echo "query: $query\n"; } ?></code>
Si $ La requête n'est pas explicitement déclarée, le code ci-dessus afficherait la valeur d'une variable GET ou POST nommée "requête" sans erreur. Bien que cela ne constitue pas une menace immédiate, un code PHP mal conçu est malheureusement courant.
Dans de tels scénarios, REGISTER_GLOBALS peut introduire des effets secondaires involontaires et des failles de sécurité qui autrement seraient facilement apparentes comme des erreurs.
Conclusion
Bien qu'il ne soit pas intrinsèquement malveillant, REGISTER_GLOBALS s'est avéré être une cause importante de problèmes de sécurité et de stabilité au sein des bases de code PHP. En conséquence, il a gagné sa tristement célèbre réputation et les développeurs ont convenu à l’unanimité de le traiter comme un décor paria.
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!