php 5.3 register_globals,php – 处理register_globals

php 5.3 register_globals,php – 处理register_globals我不确定这是否可以被标记为社区维基,但无论如何:是否有一种简单的方法可以杀死register_globals?我正在研究PHP框架,现在,我只是设置脚本,如果register_globals为On则终止.虽然我更愿意强制人们禁用它,但仍有服务器仍然可以使用它.我知道在PHP5.3.0中不推荐使用register_globals,在PHP6中它将被完全删除,但是当它仍在这里时处理它总是一件好事….

大家好,欢迎来到IT知识分享网。php 5.3 register_globals,php – 处理register_globals

我不确定这是否可以被标记为社区维基,但无论如何:

是否有一种简单的方法可以杀死register_globals?我正在研究PHP框架,现在,我只是设置脚本,如果register_globals为On则终止.虽然我更愿意强制人们禁用它,但仍有服务器仍然可以使用它.

我知道在PHP 5.3.0中不推荐使用register_globals,在PHP 6中它将被完全删除,但是当它仍在这里时处理它总是一件好事.

我看到了一些方法,我正在考虑使用它:

$temp = array_merge($_GET, $_POST, $_COOKIE);

foreach($temp as $k => $v) {

if(isset($$k)) unset($$k);

}

但是这里有一些问题.它是资源激励,特别是当有大量输入数据时.我不确定在运行时禁用它是否会起作用,例如:

ini_set(‘register_globals’, ‘Off’)

有没有更好的方法让我没有听说过摆脱register_globals?谢谢.

解决方法:

有一些处理register_globals described in the PHP manual的方法.region_globals ini通过ini_set()设置can’t be set at runtime,所以如果你不能用.htaccess或web服务器配置文件,那么提供的方法就是官方解决方法.

它基本上提供了这段代码来模拟兼容性:

// Emulate register_globals off

function unregister_GLOBALS()

{

if (!ini_get(‘register_globals’)) {

return;

}

// Might want to change this perhaps to a nicer error

if (isset($_REQUEST[‘GLOBALS’]) || isset($_FILES[‘GLOBALS’])) {

die(‘GLOBALS overwrite attempt detected’);

}

// Variables that shouldn’t be unset

$noUnset = array(‘GLOBALS’, ‘_GET’,

‘_POST’, ‘_COOKIE’,

‘_REQUEST’, ‘_SERVER’,

‘_ENV’, ‘_FILES’);

$input = array_merge($_GET, $_POST,

$_COOKIE, $_SERVER,

$_ENV, $_FILES,

isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());

foreach ($input as $k => $v) {

if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) {

unset($GLOBALS[$k]);

}

}

}

unregister_GLOBALS();

?>

标签:php,register-globals

来源: https://codeday.me/bug/20190527/1159741.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/20636.html

(0)
上一篇 2024-02-06 22:00
下一篇 2024-02-07 18:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信