游客:
注册
|
登录
|
统计
|
帮助
|
信息上报
|
SEBUG
SSD Forums
»
应用安全
» PHP in the Register Globals
‹‹ 上一主题
|
下一主题 ››
打印
PHP in the Register Globals
kiki
注册会员
精华:0
帖子:171
注册:2008-6-12
状态:离线
#1
发表于 2008-11-15 12:14
[资料]
[短消息]
PHP in the Register Globals
by amxku
2008-09-28
http://www.wolfexp.net
在php中用户的输入数据为 GET、POST 和 COOKIE 三种,一般被称为 GPC 数据。php4.3.0之后的版本中register_globals 的默认值为off,但现在还是有部分在php.ini中将register_globals 的设为on,所以这里就存在了一些隐藏的风险。
register_globals 本身并没有安全风险。但如果将register_globals设为on,在全局名称空间和 $_GET、$_POST 或 $_COOKIE 数组中,将创建 GET、POST 和 COOKIE 传递到 php 脚本的所有变量。各种变量都被注入代码。再加上 php 在使用变量之前是无需进行初始化的,如果开发人员没有好的编程习惯,这就使得更容易产生一些安全风险。
我们来看下面的代码:
[Copy to clipboard]
CODE:
<?php
if ($username) {
$checkin = true;
}
if ($checkin) {
Header("Location:./admin/admin.php");
}
?>
由于并没有事先把 $checkin 初始化,当register_globals为on时,可能通过GET ./?checkin=1 来定义该变量值,就可以绕过。如果 register_globals为off,就不能通过URL方式来给$checkin 赋值,就不会存在绕过验证的问题。如果开发者有一个好的编程习惯。在上面的代码执行之前对$checkin 变量进行初始化的话,那不管register_globals 是 on 还是 off ,都将不会存在类似的问题。
仅仅只是关闭 register_globals 这并不能代表所有的代码都安全了。所有的输入都是有害的,所以对于提交来的数据,都要对其进行严格的检查,永远都得用户提交的数据进行验证及对所有的变量进行初始化处理!
[
顶部
]
当前时区 GMT+8, 现在时间是 2009-1-10 04:37
鄂ICP备05024839号
Powered by Discuz! 2.2F & sebug.net
Processed in 0.023633 second(s), 6 queries
TOP
清除 Cookies
-
联系我们
-
Archiver
-
Help