【问题标题】:Best practice: Start SESSION handling before or after POST data has been checked最佳实践:在检查 POST 数据之前或之后开始 SESSION 处理
【发布时间】:2013-11-24 07:00:43
【问题描述】:

关于启动会话处理的最佳做法是什么,session_start()。应该在检查$_POST数据之前还是检查$_POST数据之后启动它?

【问题讨论】:

  • 理想情况下,应该在必须读取或写入会话数据之前立即启动它。 :P
  • 我的理由是在触发之前检查并确认任何 $_POST 数据。如果 $_POST 数据有效且为真,则可以启用会话处理并设置要设置的任何内容,甚至将 HEADER 设置回同一脚本,如果未设置 $_POST 数据,则第二次检查可能是会话是否已设置. :)

标签: php session post


【解决方案1】:

这取决于您的代码在做什么以及您对 $_POST 数据的关心程度。我将讨论一些场景以帮助您理解我的观点。

如果会话的存在可以为用户提供某种应受保护的特权,并且 $_POST 数据包含确定会话是否有效的内容,那么当然,您需要首先验证发布数据。例如,您有一个 if 语句,它只询问“是否有会话?如果有,请授予权限”。如果发布数据包含用于验证它们的用户名/密码,但您已经开始了一个会话(赋予他们特权),那么这显然很糟糕。

会话本身可以存在,但不一定意味着任何特权(以及安全性)。在这种情况下,您可能会将会话用于所有访问者都拥有的某种持久信息。如果有人“登录”,然后您将添加到会话数据中。在这种情况下,会话存在,但您只是在将“登录”信息添加到会话之前等待验证用户名/密码。

可能性可能非常大,我认为没有一个答案可以适用于所有情况。请务必考虑所有可能性并遵循标准安全做法。

【讨论】:

    【解决方案2】:

    我更喜欢先启动它,因为我可以检查会话中已有的数据

    【讨论】:

    • 会话不消耗服务器资源吗?
    • 会话是服务器中的临时文件,php 在处理它们时相对较快。
    猜你喜欢
    • 2017-01-31
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多