登录系统和会话(php)

时间:2010-04-08 15:12:50

标签: php session login

我已经创建了一个登录页面和注册页面,现在我想用它来密码保护页面,并且页面显示特定于该用户的信息。

将存储在Session变量中的用户的用户ID存储为安全且正确的方法吗?

用户将会话变量更改为其他ID并访问其他用户的信息,而不必输入用户登录详细信息,这是多么容易?

编辑:将每个页面的用户ID发布到下一个页面会更安全吗?

4 个答案:

答案 0 :(得分:1)

这是article on session security

如果你加密用户名,只有你的PHP脚本可以解密它,那么我猜你应该是安全的。

答案 1 :(得分:1)

这就是会议的意思 对于会话安全性,您可以查看http://phpsec.org/projects/guide/4.html

答案 2 :(得分:0)

我将讨论默认会话行为,这里:会话基于cookie“PHPSESSID”,它设置为MD5校验和(32个字母数字字符)。 PHP从浏览器接受此cookie,并使用它来加载服务器端会话数据。客户端无法直接修改会话中的数据,但可以指定自己的会话ID。

您可以添加其他安全层(SSL,检查客户端IP等),但默认情况下,如果我知道您的cookie,我可以有效地登录。至于“简单”是多么的好,这取决于许多其他安全层:有人嗅探你的流量,你是否安装了恶意软件等等。

Suhosin这样的工具尝试提高会话安全性。

答案 3 :(得分:0)

虽然我不知道用户可以操纵$_SESSION中的信息,除非您的代码(或服务器上的代码)允许他们这样做,所以不要做任何疯狂的事情......

foreach($_POST as $key=>$value) { // DON'T DO THIS
    $_SESSION[$key] = $value; // DON'T DO THIS!
} // WHY ARE YOU DOING THIS!?

你不应该做这样的事情,只是在你的$_SESSION变量中放置用户提供的任何数据。与数据库一样,写入会话应该被视为一种输出形式,你应该相应地清理你放入它的内容(以及它放在哪里)。

所以,除非你做这样的事情(你可能会更加微妙),我认为你不必担心用户改变会话变量。您可能不得不担心threats of a shared hosting environment可能不是最终用户的人正在操纵会话信息。

会话标识符不那么安全,因为有hijack a session in PHP的几种简单方法。

我建议查看我一直链接到的那本书,Essential PHP Secutiry。这是对几个基本PHP安全概念的一个非常小而直接(但彻底)的解释,其中许多概念可以概括,并且在进行任何Web开发工作时都应该牢记。