我正在考虑实现在我的网站上打开和关闭某些内容的功能,例如注册和记录。 我可以包含一个包含变量的文件
<?php
$upload = 1;
$register = 1;
?>
然后假设我的register.php文件我可以这样检查
if($register == 1){
//Show form
} else { echo "Registration is disabled" }
我想知道这是否会出现安全问题,因为我在某处读到了可以为url添加内容以带来相同的效果 像这样
register.php?register=1
但如果关闭注册表全局变量,这不起作用,这是一个很大的安全问题吗?
答案 0 :(得分:2)
register.php?register=1
只能从$_GET['register']
访问
除非您使用较旧版本的PHP且启用了register_globals 谢谢Lex
如果您在服务器上配置某些功能,我建议您改用会话。
$_SESSION['upload'] = 1;
$_SESSION['register'] = 1;
与常量不同,如果符合某些条件,则可以更改它们。
register_globals()
已从最新的PHP 5.4.0中删除,因此,请不要使用它。
答案 1 :(得分:2)
如果您从包含文件中获取这些常量,那么使用常量而不是变量会更好。在任何情况下,都不能在运行时修改常量:
define('UPLOAD', 1);
define('REGISTER', 1);
if (defined('REGISTER') && REGISTER === 1) {
// Registration disabled
}
只要关闭register_globals
(它应该是!!!!),就无法通过$_GET,$_POST,$_REQUEST
中的HTTP请求修改全局变量,除非您通过访问这些变量在代码中明确这样做超全局。
答案 2 :(得分:1)
只要你关闭了register_globals,你就不用担心了。
答案 3 :(得分:1)
关闭整数寄存器,根本不是问题。如果你得到这样的输入,就会出现问题:
$ register = $ _GET ['register'];
并且不要检查您是否确实有一个号码而不是一些恶意代码。