什么是创建安全登录过程的正确方法?

时间:2013-11-22 16:56:42

标签: php html security session cookies

我想知道创建登录程序的正确方法。

到目前为止,我认为创建一个$_SESSION['login']甚至一个$_COOKIE['login']是一种很好的方式,它们都具有相同的内容,这是一种时间戳加上加密形式的密码。

这个想法背后的逻辑是检查两者是否存在并比较它们的内容。如果两者都存在且内容相等,则可以访问受保护的页面。

我知道Cookie是一种会话。 Cookie将存储在用户客户端站点和会话中,但只有在浏览器打开时才会存在。我认为即使关闭浏览器并破坏会话,也可以延长会话的生命周期。

这应该确保SESSION不会被黑客攻击并且COOKIE被盗,这使得黑客无法访问用户的个人资料。

我对这个想法是对的,或者你们是怎么做到的?

非常感谢。

1 个答案:

答案 0 :(得分:5)

首先,你需要了解会话和cookie之间的区别。

会话和Cookie都是key =>值存储。但其中存储对其安全属性有很大影响。

Cookie存储在客户端计算机上。他们不安全。用户可以修改cookie的值,忘记cookie,发送更多cookie等.Cookie可以存储很长一段时间(几个月,几年)。由于客户端存储cookie,因此您不必过多担心空间限制。请记住,每次请求都会发送所有Cookie。

您在Cookie中存储的内容通常是相当无关紧要的内容,例如某些偏好设置或“我已经看过您的弹出窗口询问有关调查问卷”。

会话数据存储在服务器上,只有服务器可以从中读取并写入。用户永远不会看到会话中的内容。会话数据通常会在30分钟到24小时之间快速到期。

但是你怎么知道哪个会话属于哪个访问者?好吧,你使用会话标识符cookie。 这是您需要的唯一Cookie 进行身份验证。在PHP中,此cookie为PHPSESSID,当您调用session_start();时,它会自动创建和使用。会话cookie是一个具有难以“猜测”的随机值的cookie,这使其安全。

用户将保留会话cookie。您可以找到关联的会话数据(自动使用$_SESSION)。在会话数据中,您可以存储用户是否已登录,如果是这样,您甚至可以存储用户拥有的权限(如迷你缓存)。您可以将其视为不可记录的key =>值存储,只需确保不要存储太多(限制取决于存储机制)。

会话存储在特定的地方;哪取决于您的网络服务器和操作系统。在PHP中,您可以通过调用session_set_save_handler来指定自己的会话存储处理程序。例如,这允许您将会话数据保存在数据库中。

如果会话标识符cookie的值以某种方式暴露,攻击者可以劫持会话。它可以通过在wifi接入点(如条形图中)使用不安全的连接来暴露。要反击这个使用HTTPS;通过HTTPS发送的cookie是加密的,并且不受这种中间人攻击的影响。这就是Firesheep插件所做的(2010年)

相关问题