【问题标题】:Is it secure to store validated Form data in Session superglobals in PHP?在 PHP 的 Session 超全局变量中存储经过验证的表单数据是否安全?
【发布时间】:2014-02-04 04:48:57
【问题描述】:

我有一个非常简单的问题,我之所以问这个问题是因为我不确定答案。我正在构建一个包含多步骤注册表单的应用程序。有 7 个步骤,每个步骤都在不同的 PHP 页面上。一旦客户端进入下一页,我也会验证提交的表单数据。

我的问题是: 将所有已验证(仅已验证)信息存储在 Session 变量中是否安全,当他们完成注册时,我会将这些会话值写入数据库。为此目的使用会话是否安全?如果没有,如何利用这种方法?

我还为人们提供了返回每个步骤并在输入错误时更改值的选项。在这种情况下,我只会更新 Session 变量。也安全吗?

我目前正在使用session_regenerate_id() 来防止会话窃取。

所以基本上我可以安全地将数据暂时存储在 Sessions 中,然后将它们插入数据库吗?黑客能否同时更改该会话数据,因此我将插入数据库的内容与我保存到会话中的内容不同?

我希望你能理解我的问题。任何帮助将不胜感激!

【问题讨论】:

  • 会话是服务器端存储系统。如果黑客可以在您的服务器上写入随机文件,那么您需要关心的问题就更大了。

标签: php forms session session-variables session-cookies


【解决方案1】:

是的,它是安全的。会话数据存储在服务器端,不能被客户端操作。客户端拥有的唯一东西是会话密钥,它允许服务器将客户端与存储的该客户端的会话变量进行匹配。只要您在将信息存储到$_SESSION 之前验证信息,就可以在流程结束时将会话变量转储到数据库中。

这里是more information on sessions and security。解决会话窃取问题的简单方法就是使用 SSL。

我还为人们提供了返回每个步骤并在输入错误时更改值的选项。在这种情况下,我只会更新 Session 变量。也安全吗?

只要您重新验证会话变量,您也可以使用这种方法。

【讨论】:

  • 谢谢你的回答,我现在冷静多了。为额外资源 +1。
【解决方案2】:

如果您保护会话 ID 以防止会话窃取,那么继续,会话是存储在服务器端的安全变量,每个客户端都有自己的会话,所以如果您确定确保会话 ID 安全,那么没问题

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2014-01-10
    • 2010-10-21
    • 1970-01-01
    相关资源
    最近更新 更多