Par*_*ack 36 php mysql session
所以,我知道这已经完成了死亡,但我遇到的所有答案都非常令人困惑/相互矛盾,或者他们的解释是不完整的,我正在努力跟上并利用所有资源做到这一点可用,但我想我已经失去了某个地方.我想一劳永逸地澄清一下.感谢您提前耐心,因为这可能会让您有点长时间的啰嗦.
我的页面顶部有一个小的登录框,如果用户没有登录,它将保持不变.如果他们已登录,那么他们将看到一个问候语,其中包含他们的名字,而不是登录框.
会话检查
首先,这里是一个图表(据我所知到目前为止)如何检查用户是否可以访问"仅限会员"的内容.(此代码位于页面顶部以检查和设置变量,例如$loggedin = true;)

就目前而言,我$_SESSION['loggedin']只是用户名.根据我的理解,会话可以伪造或劫持来自同一个域,因此我知道这是非常不安全的(例如,攻击者可能会以某种方式创建一个包含不同用户名和会话的会话 - 即时访问该用户的东西)但是我不知道我应该如何检查会话.我可以想象这样做的唯一方法是每次加载页面时连接到数据库并检查MD5哈希或来自数据库的东西(并更新它)但我想这会产生大量不必要的服务器流量而且我我几乎可以肯定有更好的方法.
在登录
以下是用户登录时发生的情况(以及是否显示问候语或登录框).

在大多数情况下,我非常坚定这部分(我希望),但我不知道我的MD5哈希应该包含什么,以便以后能够重新检查数据库中的哈希值, cookie和一个新生成的哈希,以确保攻击者没有召唤出一个cookie.另外,如下面的评论中所述,我可能会废弃在哈希中使用IP地址以允许用户保持从多个位置登录(例如,他们的手机和笔记本电脑.)
所以我的问题是:
如果您有什么想问的话,请在评论中告诉我,我很乐意用尽可能多的信息来编辑我的问题.
你不能劫持会话的内容.如果您是中间人,那么您可以使用相同的会话ID充当用户.但是,此问题对于任何类型的会话仍然有效.
如果你想防止中间人攻击,你应该使用HTTPS.
使用HTTPS可以保证:
HTTPS的主要缺点是: