处理Cookie中用于登录的用户名/密码

问题描述 投票:-1回答:4

制作登录脚本,我现在有以下cookie:

这在每个页面上,但是在浏览器关闭时到期。

session_name('Test_Login');
session_set_cookie_params(0, '/', '.test.com', false, false);
session_start();

如果成功登录,它将存储用户名。返回网站后,它将在登录表单中填写用户名。

setcookie('Test_User', $_POST['username'], time()+365*24*60*60, '/', '.test.com', false, false);

这会记住登录表单中'remember me'选项的值-true或false。

setcookie('Test_Remember', $_POST['rememberMe'], time()+365*24*60*60, '/', '.test.com', false, false);

如果用户选择了上面的“记住我”选项,它将存储用户纯文本密码,即使他们在一天之内关闭浏览器,也可以让他们在访问该网站时自动登录。如果存在此cookie和用户cookie,它将检查是否有效,然后再次创建用户会话变量。

setcookie('Test_Pass', $_POST['password'], time()+24*60*60, '/', '.test.com', false, false);

其他要考虑的事项是,如果注销会话密码,则cookie被破坏。

我的问题:我在md5上添加了用于存储在数据库中的用户密码。我实际上不知道用户通过了。问题是使用“记住”选项时,我将其密码以纯视图方式存储在Cookie中。将通行证存储在Cookie中的最佳方式是什么?这样做的标准是什么?基本上,我只希望它与Facebook或任何其他登录系统相同。如果您让它记住您的操作,那么-他们如何存储信息以重新登录,而又不以cookie中的纯文本格式登录?

最佳做法是为此使用一个单独的cookie(4)吗?会话cookie很有道理,但是我还没有一种更优化的方式来组合其他三个吗?

cookies login session-cookies
4个回答
2
投票

您不应该将密码存储在cookie中,这不是一个好习惯,它可能导致安全问题(例如,有人可以“窃取” cookie并获取用户密码)。

相反,一旦对用户进行了正确的身份验证,您就可以将sessionId保存在cookie中,并在下次访问时将sessionId传递到服务器,服务器将能够检索该会话。为了增加安全性,请存储IP地址,并在重新打开会话时检查该IP地址是否相同。例如,您也可以使服务器会话在2周后过期。

为此,您需要使用Cookie,而不是会话Cookie(关闭浏览器后将被删除)。检查session_set_cookie_params()并赋予会话Cookie生命周期。有关更多信息,请参见PHP手册:http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime

最后,如果您确实想要更多的安全性,那么绝对应该看看SSL。


1
投票

您应该使用会话变量,而不是将数据存储在cookie中。

这是PHP中的示例

<?php

session_start();
$_SESSION['password'] = 'YOUR PASSWORD HERE';

//then you can reference the session variable in your code
echo $_SESSION['password'];

?>

您可以设置会话将保留多长时间,并且用户不能直接访问会话变量,因为它们存储在服务器上。这是许多安全登录系统的工作方式。


1
投票

出于我的目的,有多个消息来源指出http://jaspan.com/improved_persistent_login_cookie_best_practice是最佳实践。


0
投票

我不喜欢必须破解凭据并将其保存在sharedPreferences中的想法。这不是一个好习惯。例如,如果您使用身份验证方法,则可能会将auth令牌保留在您的应用程序中,并且在注销时已经在清除它。您可能还在那里清除了cookie管理器。如果应用知道下一次用户将要登录怎么办,知道不存在身份验证数据,而不是清除cookie管理器,而是点击一个可用于注销的网址,并且当webview知道它已成功注销后,便开始登录过程再次。

© www.soinside.com 2019 - 2024. All rights reserved.