我正在一个网站上工作,并且想要创建用户登录和会话。什么是最安全的方法来检查会话是否存在(如cookie或会话变量检查),或任何更好的想法,然后在PHP中使用会话?在php中创建会话最安全的方法
回答
session_id()
回报ŧ他当前会话的会话ID或空字符串(“”),如果没有当前会话(不存在当前会话ID)。
但只是告诉你,如果有一个会话是活动的。
大部分时间,我只是在每个脚本的开头(即使用户没有登录)调用session_start();
。在登录时,我使用用户标识或用户对象设置了$_SESSION['user']
。在注销时,我只是unset($_SESSION['user']);
。通过检查empty($_SESSION['user'])
我可以检查某人是否仍然登录。如果你在会话的其他地方存储了依赖于用户的信息,请不要这样做,否则登录的下一个人可能会得到他不应该看到的信息(在这种情况下,请使用session_destroy();
)。
但安全吗?只需通过GET/POST url去重写session-id传播重写(仅限cookie),这样它们就不会以可以缓存或分发给其他人的URL(在这种情况下,会话劫持成为可能)结束。你可以通过在php.ini中设置session.use_only_cookies
来实现。
如果您在不可信和/或配置错误的共享服务器上托管,则可能会有其他安全问题 - 这可能会导致同一台计算机上的其他人读取您的会话数据。在这种情况下,您可以通过重写会话处理程序将会话数据存储在数据库中。只需在intertubes上搜索session handler mysql
,我确信有足够的随时可用的解决方案。并且不会在会话中存储密码等敏感信息,所以每次需要对其进行比较时最好进行一次查询。
除此之外...使用ssl/https进行登录和用户管理,因此不会传输明文密码。在数据库中只存储salt的pw-hashes。不要让任何人看到密码(意思是:不要将它们打印到HTML或电子邮件)。请勿将auto_increment值用于用户可以看到的ids(并因此猜测)。好吧,这已经超出了问题范围。
这里的会话安全
PDF文档无法正常工作。 – 2014-04-11 17:53:38
- 1. 创建安全的PHP会话cookie
- 2. php中的会话安全
- 3. 在PHP中安全的最佳方法?
- 4. PHP会话安全
- 5. PHP - 会话 - 安全
- 6. 创建1300个工作簿的最快(最安全)的方法?
- 7. 安全注销PHP会话
- 8. PHP会话和安全
- 9. PHP REMOTE_ADDR和安全会话
- 10. PHP安全会话检查?
- 11. PHP会话是否安全?
- 12. PHP会话变量安全
- 13. PHP会话安全提示
- 14. PHP会话安全问题
- 15. 在弹簧安全中创建一个会话范围的bean
- 16. php中的安全会话/ cookie
- 17. 安全的这些方法来编码和解码PHP会话
- 18. 安全登录按会话在php
- 19. 创建全球会话
- 20. PHP会话安全 - 金丝雀会议
- 21. 会话安全
- 22. Php不在webmatrix中创建会话
- 23. 如何设置安全的PHP会话
- 24. PHP的会话变量是否安全?
- 25. Spring - 控制会话创建的最佳方法
- 26. jquery ajax无法创建php会话
- 27. 在PHP中验证URL最安全的方法是什么?
- 28. 在PHP中避免SQL注入的最安全方法?
- 29. Spring安全注销和最大会话
- 30. PHP登录会话创建
',并且不会在会话中存储密码等敏感信息,所以每次需要对其进行比较时,最好进行一次查询。 - 嗯,我认为存储密码的单向加密版本(md5 + hash)会更快,然后检查它是否会将查询重复执行到db一次又一次 – Strae 2009-04-15 16:59:13
为真,但通常您不需要检查每个网页浏览的密码,只有#1:登录和#2:更改它(如果你要求用户提供当前的密码来设置一个新的密码)。对于#1,你必须查询数据库,而#2不会经常发生,所以额外的开销可以忽略不计。 – stefs 2009-04-15 17:21:24