【问题标题】:Storing USER ID in PHP SESSION在 PHP SESSION 中存储用户 ID
【发布时间】:2014-10-01 00:20:20
【问题描述】:

我正在为智能手机开发一个 WEB-APP,并且对登录程序有一些疑问。

假设用户已经注册,用户在我的网站上要做的第一件事就是使用用户名和密码登录门户。 该用户名和密码被发送到一个 php 登录函数,该函数根据盐值等检查信息是否正确。 如果信息正确,则会创建以下项目并且用户已登录。

$_SESSION['user']=$id;
$cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds
setcookie(session_name(),session_id(),time()+$cookieLifetime);

稍后在网站中,用户使用会话调用数据库以提取与该用户相关的信息。

例如,我正在为 AGENTS 构建一个客户管理系统,其中 AGENTS 可以将客户信息存储到我们的数据库中。每个客户端都有一个与之关联的 AGENT ID,这是 AGENT 在站点上注册时收到的 ID,并且此 ID 在 AGENT 登录时也存储在会话中。 当代理登录到他们的门户时,php 脚本会进行数据库调用并返回与代理 ID 号关联的所有客户端。

任何人都可以篡改会话 ID 吗?如果是这样,我该怎么做才能解决它?

【问题讨论】:

  • PHP 不是我的菜,但你确定你必须自己创建那个 cookie 吗?
  • Arjan cookie 是为 iphone web 应用程序创建的,我将减少它的时间。
  • 不确定你在说什么/问什么。我看到“任何人都可以篡改会话ID吗?”,这可能已经在SO的某个地方得到了回答。但是您也表明您正在创建自己的 cookie,因此可能是根据该 cookie 自己获取/恢复(甚至创建 ...?)会话,而不是拥有框架(或 PHP)为您获取会话?和代理的部分似乎无关?

标签: php html mysql security session


【解决方案1】:

只是一些提示(您没有提供必须修复的细节):
不要在 GET-Vars 中使用 Session-ID
提供终止会话的注销按钮。
减少会话超时值(例如 30 分钟)。
cookieLifetime 值无关紧要,因为会话在 cookie 过期之前是无效的。

【讨论】:

  • 谢谢,我唯一一次使用 GET 在 URL 中传递 ID 是针对客户端配置文件,例如 profile.php?id=5.. 但是在该链接上我会做一些检查确保会话 ID 与客户端数据库行中分配的代理 ID 匹配,等等。我还检查以确保正确的用户已登录以查看该配置文件,如果没有,他们将被重定向。
  • 我还为代理创建了一个注销按钮。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
相关资源
最近更新 更多