2013-04-05 67 views
0

我不确定这是否是预期的行为。但是,如果我主持我的服务器

<?php 
print $stackoverflow; 
?> 

在下面我有另一个example.html的至极包含:

<form action="http://pinguincyb.org/roc/opdracht1/lawl.php" method="POST"> 
<input type="text" name="stackoverflow" value="example"> 
<input type="submit" value="Submit"> 
</form> 

页打印“示例”,这是正常的行为呢?这难道不该数据不可用,直到我会做类似

$stackoverflow = $_GET["stackoverflow"]; 
+0

mehtod?只是要精确... – Ihsan 2013-04-05 11:53:57

+0

http://us.php.net/manual/en/security.globals.php – DCoder 2013-04-05 11:54:29

回答

6

它的老弃用的功能PHP叫register globals。即使删除。

你应该避免它。

阅读说明书关于Using Register Globals

如果你拥有了它,你必须将其禁用。您可以在php.ini,htaccess的,httpd.conf文件或.user.ini(自PHP 5.3)

+0

谢谢你的答案,这让我疯狂。 – user2248878 2013-04-05 11:54:51

+0

+1太快回答.. – 2013-04-05 11:55:54

+0

@ user2248878,答案已更新。 – sectus 2013-04-05 12:01:04

0

此功能是旧的,过时做到这一点。避免使用它,因为它是不安全的

+0

sectus已经回答了相同的答案。 – 2013-04-05 11:56:25

+0

是的,我真的认为这将是一个可能的安全问题,这就是为什么我问。虽然我不能关掉它,但我会向我的主机发送有关配置的错误信息。 – user2248878 2013-04-05 11:58:52

+0

sectus和我几乎同时回答 – Wanderson 2013-04-05 12:07:18

0

关于安全性。

由于事实上,对于良好的应用程序不如果此设置开启或关闭无关紧要。

一个写得很好的应用程序必须在使用前定义所有的变量。如果遵循这条规则,没有register_globals将能够造成任何伤害。

如果您有类似

$admin = FALSE; 
if (check_admin()) { 
    $admin = TRUE; 
} 

没有人将能够成为与管理傻

/index.php?admin=1 

即使register_globals的是上。

尽管人们必须定义热变量,只是为了程序的一致性。

这就是要点。