PHP会话 - 几个问题

时间:2017-02-22 09:59:41

标签: php session

我正在使用PHP会话在我的网站上存储跟踪数据。会话以session_start();

开始

顺便说一下 - 这不是登录脚本。我正在跟踪用户输入的第一页,日期/时间和一些其他变量。

我将信息存储在数据库中,最后使用以下命令将用户重定向到页面:

header("Location: ".$URLHERE);
exit(); 

关于使用会话的一些问题:

  1. 由于我没有在重定向后明确关闭会话,PHP是否会从磁盘中删除会话变量 - 或者我是否必须自己处理?
  2. (我担心在我的Apache服务器上构建数据文件)

    1. PHP会话是否存在安全问题?这不是登录,但我的脚本确实依赖会话变量来跟踪有关该unqiue访问的信息。
    2. 谢谢:)

3 个答案:

答案 0 :(得分:4)

首先,请执行这些

注意:在开始会话之前,最好将会话路径保存到文件夹中。还为此文件夹提供读/写权限。例如

session_save_path('会话文件夹的路径'/会话名称); 在session_start();

  1. 应在设置或检索任何会话之前调用session_start。最佳做法是在页面的乞讨点设置会话,即在打开php标签后立即(

  2. 非常重要的一点 - >必须在浏览器中启用Cookie

  3. 确保关闭_globals,您可以在php.ini文件中查看,也可以使用phpinfo()。

  4. 在每个标题重定向之后。请使用exit以使脚本不再继续,在重定向之前请不要删除或清空会话。还要重定向到同一个域。

  5. $ _ SESSION [key] - >确保不会在任何地方覆盖此密钥。

  6. 文件扩展名必须始终为.php

  7. 我希望使用上述步骤为您提供帮助。

答案 1 :(得分:1)

  1. 不,会话垃圾回收由系统根据php.ini的{​​{3}}属性进行管理。由于您的PHP脚本是基于每个请求运行的,因此调用session_destroy()将导致在每个请求结束时丢失有关用户的数据。

  2. php会话没有安全问题,只有风险是攻击者窃取了cookie,但你可以避免需要https。

  3. 请注意,您也可以在没有会话的情况下执行此操作,但使用Cookie API。

答案 2 :(得分:1)

这是您的答案

1。由于我没有明确地在重定向后关闭会话,PHP是否从磁盘中删除会话变量 - 或者我是否必须自己处理?

  

当会话创建然后在服务器上创建一个文件时,如果用户在网站上不再活动,那么它将自动删除为默认会话活动时间1440秒(24分钟)。可以通过编辑 session.gc_maxlifetime = 1440

php.ini 设置会话超时

2。 PHP会话是否存在安全问题?这不是登录,但我的脚本确实依赖会话变量来跟踪有关该unqiue访问的信息。

  

不,PHP会话没有问题,只需要处理XSS