RCI*_*CIX 14 php register-globals
我不是一个PHP开发人员,但我在几个地方看到人们似乎把它当作瘟疫之类的东西.为什么?
sou*_*rge 14
REGISTER_GLOBALS意味着通过GET或POST传递的所有变量都可以作为脚本中的全局变量使用.由于访问未声明的变量不是PHP中的错误(这是一个警告),它可能导致非常恶劣的情况.考虑一下,例如:
<?php
// $debug = true;
if ($debug) {
echo "query: $query\n";
}
Run Code Online (Sandbox Code Playgroud)
这本身并不是一件坏事(精心设计的代码不应该生成警告,因此不应该访问任何可能未声明的变量(并且不应该 REGISTER_GLOBALS出于同样的原因)),但PHP代码通常[非常]低质量,导致这种安全漏洞.
启用REGISTER_GLOBALS会将PHP提供的网页暴露给一些坏人会热衷于利用的漏洞.
启用它后,URL末尾的任何查询字符串:
http://yourdomain/something.php?valid=true
Run Code Online (Sandbox Code Playgroud)
会影响something.php中变量$ valid(例如)的值(如果存在).
如果你使用公开可用的PHP代码(例如一个库),变量的名称是众所周知的,并且黑客可以通过在查询字符串中分配值来控制它们的值.他们可能可以绕过身份验证.
即使您没有使用公共代码,也可以猜测重要变量的名称,并控制它们的值.
它曾经是PHP.INI中启用REGISTER_GLOBALS的默认设置
最近的做法是默认禁用它.启用它需要您自担风险!
| 归档时间: |
|
| 查看次数: |
9949 次 |
| 最近记录: |