Php会话安全登录

Php会话安全登录,php,security,session,Php,Security,Session,我的问题是关于创建一个安全的登录例程。将用户名和密码与存储值进行比较后,我将名为logged的会话变量设置为true。然后,当用户浏览网页时,我只需检查记录的变量的true或false,以确定用户是否应该具有访问权限 这是我第一次创作这样的作品。这安全吗?我觉得我应该做些别的事情来确保用户是有效的。您可能也想在会话中存储用户名,以便为用户正确定制任何页面。您所描述的是“安全的”,但如果不知道您正在做什么,则很难评估应用程序的安全性。当然,它是安全的,但您应该采取一些预防措施来防止不安全的情况/攻

我的问题是关于创建一个安全的登录例程。将用户名和密码与存储值进行比较后,我将名为logged的会话变量设置为true。然后,当用户浏览网页时,我只需检查记录的变量的true或false,以确定用户是否应该具有访问权限


这是我第一次创作这样的作品。这安全吗?我觉得我应该做些别的事情来确保用户是有效的。

您可能也想在会话中存储用户名,以便为用户正确定制任何页面。您所描述的是“安全的”,但如果不知道您正在做什么,则很难评估应用程序的安全性。

当然,它是安全的,但您应该采取一些预防措施来防止不安全的情况/攻击

你所描述的机制根本没有问题。但实施不完整/不具体。您必须考虑密码存储,以及登录时使用的过程。p> 针对投诉,以下是OWASP提出的有关身份验证/会话的一些问题。

一,。使用哈希或加密存储时,凭据是否始终受到保护

是的,将用户密码存储为盐哈希

二,。是否可以通过弱帐户管理功能(例如,帐户创建、更改密码、恢复密码、弱会话ID)猜测或覆盖凭据

不,这些功能应该受到安全问题/电子邮件链接的保护

三,。会话ID是否在URL中公开(例如,URL重写)

不,他们不应该这样

四,。会话ID是否容易受到会话固定攻击

不,不允许用户通过登录以外的任何方式设置会话id

五,。会话ID是否超时,用户是否可以注销

如果用户没有另外指定“保持登录两周”,会话应在结束后立即过期

六,。成功登录后会话ID是否轮换

是的,使用
session\u destroy()
session\u start()
将完成此任务

七,。密码、会话ID和其他凭据是否仅通过TLS连接发送

当然

最终,你必须考虑你要处理的数据类型。永远不要允许某人访问用户的密码,因为这可能会损害他们在其他地方的数据。但是,如果你正在运行colorakitten.com,不要因为会话被劫持的可能性而失眠:“哦,不,有人入侵了我的帐户,并使我的小猫们变色。”


阅读:

任何获得会话cookie的人都可以以您的身份登录。如果您将会话绑定到一个ip地址,那么要困难得多。但是,这可能会给你带来问题的人有不断变化的ip地址。如果你不处理任何类型的敏感信息,只是试图提供个人用户体验,那么你所做的一切都是好的。但是,如果您真正关心安全性,则可以采取其他几种方法。第一种方法是创建一个名为“user_tokens”或类似的数据库表。当用户登录时,创建一个随机密钥并将其ip地址存储在与该密钥相关联的表中。此外,将该密钥存储在客户端计算机上的cookie中。每当他们尝试做一些敏感的事情时,您可以将他们的ip地址和cookie的密钥与数据库的ip地址和密钥进行比较


稍微研究一下跨站点脚本(XSS)和会话劫持。我上面概述的方法将真正减少这种情况。

服务器如何决定结束保存会话中的数据?-1这个答案很糟糕。那个家伙不知道他在说什么,是的,我也给出了答案a-1。具体来说,这个答案显然违反了OWASP 2010年排名前十的A3:破坏的身份验证和会话管理。不,答案并不可怕。它也没有坏。使用PHP$\u会话函数并根据IP检查它是很好的,特别是通过SSL。虽然它可以工作,但通常避免额外的数据库查询。相反,将此信息粘贴到cookie中并签名。别相信我的话,接受卡尔的。信息在cookie中。。。这就是用来与数据库中的值进行比较的内容。饼干并不总是安全的,因为它们可能被偷走。如果你处理的是超敏感信息,那么额外的查询是值得的。