我经常看到人们将$ _SESSION变量设置为
$_SESSION['example']=$_REQUEST['something'];
$example=$_SESSION['example'];
这是多余的吗?
我目前正在开发新服务器
$_SESSION['example']=$_REQUEST['something'];
让我可以访问$ example而无需任何额外的代码
这是正常的还是php配置让我的生活更轻松但可能更危险?
答案 0 :(得分:5)
这听起来像是一个名为register_globals的php.ini指令,用于您正在使用的服务器。这被认为是不好的做法,甚至在最新版本的php中已被弃用和删除。查看这部分php文档以获取更多详细信息。
http://www.php.net/manual/en/security.globals.php
您永远不应该信任您的用户提供的输入,并且应该通过删除或中和可能用于跨站点脚本,注入攻击或只是垃圾数据进入您的会话,cookie或数据库的字符来清理它。
请查看以下内容以加快速度。
http://www.codeassembly.com/How-to-sanitize-your-php-input/
http://www.phpbuilder.com/columns/sanitize_inc_php.txt
http://www.devshed.com/c/a/PHP/Sanitizing-Strings-with-Filters-in-PHP-5/
答案 1 :(得分:1)
第一个代码和第二个代码没有区别。似乎有一种将全局变量放入局部变量的特性,使它们安全。但事实并非如此。
您应该对待来自用户空间的任何内容。 (POST,GET,REQUEST,COOKIE)就好像它被感染了一样。
答案 2 :(得分:1)
仅当“register_globals”设置为“on”时才会发生,这是不推荐的!