【问题标题】:Storing POST data in SESSION在 SESSION 中存储 POST 数据
【发布时间】:2011-01-16 23:05:59
【问题描述】:

我正在创建一个多步骤调查,并希望在将所有内容写入数据库之前将数据存储在 $_SESSION 中。从安全角度来看,在将数据存储在那里之前,我应该对数据做些什么吗?

【问题讨论】:

    标签: php session forms post


    【解决方案1】:

    假设您正在进行基于文件的常规会话,那么从注入漏洞的角度来看,您不必担心太多。 PHP 将使用serialize() 等处理读取/写入会话文件的机制。将您想要的任何内容放入 $_SESSION 中,它会神奇地出现在下一页调用中。

    但是,从更广泛的安全角度来看,进入会话文件的任何内容都可以被在同一 Web 服务器实例下运行的任何其他内容(例如 apache 用户 ID)读取。所以它不是您可以存储敏感数据的地方,更不用说诸如信用卡/cvv 号码之类的东西了。

    【讨论】:

      【解决方案2】:

      好吧,为了避免恢复数据出现问题,我建议您为会话使用一个名称,并使用一个专门用于发布数据的数组,有点:

      $_SESSION['postData'] = $_POST;

      【讨论】:

        【解决方案3】:

        在会话中扔任何你想要的东西而不对其进行消毒是相当安全的。不过你可以,因为无论如何你都要去,所以在将它放入会话之前对其进行消毒,以便它准备好进入数据库,然后你可以睡得更香。

        【讨论】:

        • 只要变量没有通过我的引用并且对对象使用谨慎
        • 那是错误的做法。数据可能无处不在 - 电子邮件,在某些错误时返回表单等。而且,让您知道 - 会话处理程序不是做任何与数据库相关的事情的地方。它应该是正确准备数据的数据库处理程序。
        • 这并不意味着我的回答值得一票否决。我不是在争论他是如何做到的,我只是回答了他的问题。没有必要在将数据放入会话之前对其进行清理。如果他打算重新展示它,或者通过电子邮件发送它,那是他需要担心的问题。他什么也没提。只是在他们继续下一步时将其存储起来。巨魔上校再次出击。
        • 呃哦,投了反对票。只要抱怨足够长的时间,好人就会支持你,只是为了慈善
        • 我不关心我的代表。这是一个不错的答案,希望能给这个人一些方向,而不是你总是发布适得其反的垃圾。
        猜你喜欢
        • 2013-01-06
        • 1970-01-01
        • 2019-07-28
        • 2015-09-13
        • 1970-01-01
        • 2020-07-13
        • 1970-01-01
        • 2019-10-15
        • 2013-01-09
        相关资源
        最近更新 更多