【问题标题】:$_SESSION variables being controlled by PHP configuration?$_SESSION 变量由 PHP 配置控制?
【发布时间】:2009-09-07 23:15:48
【问题描述】:

我经常看到人们将 $_SESSION 变量设置为

$_SESSION['example']=$_REQUEST['something'];
$example=$_SESSION['example'];

这是多余的吗?

我目前正在开发一个新服务器,并且

$_SESSION['example']=$_REQUEST['something'];

让我无需任何额外代码即可访问 $example

这是正常的还是 php 配置让我的生活更轻松但可能更危险?

【问题讨论】:

    标签: php session variables


    【解决方案1】:

    这听起来像一个名为 register_globals 的 php.ini 指令为您正在使用的服务器启用。这被认为是不好的做法,甚至在最新版本的 php.ini 中已被弃用和删除。查看这部分 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/

    【讨论】:

    • 就是这样,谢谢 设置 SESSION 变量的最佳方法是什么?
    • 最好的方法是尽可能从适当的区域,$_GET 或 $_POST 中检索它,而不是 $_REQUEST,将输入清理为新变量,然后将该值设置为会话.然后,您可以直接从会话中检索这些值,或者根据我的喜好,您可以在会话中的代码中设置变量,然后使用这些变量。
    【解决方案2】:

    第一个代码和第二个代码没有区别。似乎有一个条件,将全局变量放入局部变量中,使它们安全。但事实并非如此。

    您应该处理来自用户空间的任何内容。 (POST、GET、REQUEST、COOKIE)就像被感染了一样。

    【讨论】:

      【解决方案3】:

      只有在“register_globals”设置为“on”时才会出现这种情况,不推荐!

      【讨论】:

        猜你喜欢
        • 2012-11-19
        • 2020-06-17
        • 2012-08-30
        • 2017-09-12
        • 2021-01-01
        • 2014-03-31
        • 2015-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多