【问题标题】:Security and sessions [closed]安全和会话[关闭]
【发布时间】:2014-01-21 14:07:42
【问题描述】:

我已经准备好几篇关于会话安全性的文章,但我还没有看到任何具体涉及我的特定代码的文章。我对我的网站的安全性非常怀疑,因为它包含敏感信息。

我的每个页面都是从这行代码开始的:

session_start();

if(!isset($_SESSION["username"]))
{
header("Location: login.html");
}

这足够安全吗?我是 PHP 新手,但我读的越多,我就越偏执。有人可以简单地设置一个名为 username 的会话,让它看起来像是我的网站设置的以获取访问权限吗?

【问题讨论】:

  • 这个问题似乎离题了,因为它是关于安全的,更适合Information SecurityCode Review
  • 仅仅因为会话数据保存在服务器端对安全性没有多大意义。现在它已被简化为与您的服务器一样安全。如果你的对手是美国国家安全局,你还不如放弃,让一切都敞开心扉。
  • @MarcB 说“它被简化为与您的服务器一样安全”基本上总是正确的。您可以使用 SSL、CSRF 保护、令人惊叹的 PRNG 做任何您想做的事情,但是如果您使用“密码”的根密码向世界开放 SSH,您仍然会被拥有,所以我看不出您的评论有什么价值带来。假设生成并存储在 cookie 中的 php 会话密钥是随机的并通过安全连接发送,检查服务器上会话中的值将是一个可信的信息来源 - OP 不会变得更好。

标签: php security session


【解决方案1】:

$_SESSION 值纯粹是服务器端的,不能被客户端篡改。

很难说您可能面临哪些其他问题,因为这只是您的登录系统的一部分,还有许多其他问题可能会让您感到困惑。

我们可以看到的一个问题是,在失败的情况下,您只设置了header,而不是之后停止脚本(例如使用die())。即使用户未登录,该if 语句下的任何代码仍将被执行,因此如果您在其中有任何操作,用户无需任何身份验证即可执行它们。

【讨论】:

  • 我没想到这个,谢谢你的提示!
猜你喜欢
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多