回答
在PHP中,通过使用set_cookie
将适当的值从$_SESSION
复制到$_COOKIE
来为会话信息(用户名,密码)设置一个cookie。当用户访问一个页面时,首先检查是否存在$_SESSION
变量,然后是$_COOKIE
变量。如果存在$_COOKIE
变量但$_SESSION
变量不存在,请将$_COOKIE
复制到$_SESSION
。 (也就是说,如果用户选中该框)。
你当然是指'set_cookie',因为'$ _COOKIE'不是魔术。 – 2011-06-11 22:51:02
是的,当然这就是我的意思......混淆了。 – Ryan 2011-06-11 22:51:53
如果有会话设置,cookie应该做的唯一事情就是指向一个可以重新初始化的已保存(在数据库中)会话。我不同意客户需要保存在cookie中的用户名和密码。会议不需要保存在其中的密码,IMO。 – 2011-06-11 22:53:42
您可以按照上面提到的@minitech进行操作。然而,将密码信息存储在cookie中并不是一个好主意。它可以很容易地从电脑中提取。
您最好生成一次性散列,可以用来登录一次并将其存储在cookie中。一旦其使用无效。虽然它不是完全安全的(无论如何,尽可能安全地使用会话,如果您希望它更安全,可以使用https),但不会影响用户密码。
用户经常在多个站点上使用相同的密码。如果它在一个网站上受到损害,则更容易进入其他网站上的用户帐户。
存储密码记忆东西的最佳方法是将md5哈希与一些浏览器特定数据一起存储。例如,你存储一个字符串,如
username-4155b1b6e53ad73e06c4c58e709cdeea19915ea84de517500d9ba3280e27cf59
例如,你可以生成这个字符串在PHP这样
$string=$username.'-'.md5(substr($http_user_agent, 5, 10)) .md5($password).md5(substr($http_user_agent, 0, 10));
我们的目标是使我们的字符串足够复杂。在登录阶段,我们使用只有我们知道的方法来提取密码md5。
$somearray=explode('-', $string);
$username=$somearray[0];
$passwordmd5=str_replace(md5(substr($http_user_agent, 0, 10)),'',str_replace(md5(substr($http_user_agent, 5, 10)),'', $string));
,现在,我们可以做我们的数据库这样的比较,
select * from users where username='$username' and md5(password)='$passwordmd5';
HTTP用户代理的东西消除了一下cookie字符串的未经授权使用的风险。虽然未经授权的人偷走了cookie,但是他不能在另一个浏览器中使用它。如果我们没有这样做,那么具有相同字符串的人可能表现得好像他拥有密码并且可以作为我们的真实用户登录。
$somearray = explode('-', $string);
$username = $somearray[0];
$passwordmd5 = str_replace(md5(substr($http_user_agent, 0, 10)),'',str_replace(md5(substr($http_user_agent, 5, 10)),'', $string));
- 1. 还记得我吗?
- 2. 还记得以前的钥匙吗?
- 3. 还记得我的cookie,需要一个会话cookie吗?
- 4. 我可以还原还原吗? SQL Server
- 5. Chrome记得老javascript
- 6. 春季安全+还记得我的问题+检票
- 7. 硅石定制/持续性还记得我
- 8. 还记得较好的语言
- 9. 还记得在DataGridView检查复选框
- 10. 斯威夫特。还记得Facebook登录
- 11. 使用phusion/baseimage还是值得的吗?
- 12. 做scriptaculous还有Javascript黑客漏洞吗?
- 13. 记得我的laravel5.2
- 14. 你还记得jira standalone的最新版本,无限用户免费吗?
- 15. 我还是没有得到MVVM!
- 16. 我们还需要Richter的AsyncEnumerator吗?
- 17. CodeIgniter + RedBean:我还需要“模型”吗?
- 18. 我还需要$(document).ready(function(){})吗?
- 19. 我还需要在芒果墓碑吗?
- 20. 我们还应该为MSIE7开发吗?
- 21. 使用Solr,我还需要SQL db吗?
- 22. 我可以从ASP.NET中的DirectorySearcher获得1000多条记录吗?
- 23. MDI还有吗?
- 24. XAMPP还在吗?
- 25. Spring Security记得我服务
- 26. 记得我弹簧安全
- 27. Grails Spring Security记得我
- 28. 使Authlogic'不记得我'
- 29. Angular.JS有模块加载器吗?还是我需要使用脚本标记?
- 30. iOS应用的方向记得吗?
也许记住用户名,但不是密码。您不需要将密码存储在服务器上的用户表中的任何位置,即使此时需要使用强大的哈希算法(最小值,sha1)对其进行哈希处理。 – 2011-06-11 22:50:54