我对PHP还是很陌生,但很多阅读内容都提示使用会话变量来检查用户是否已登录。IE我会添加一个includes.php文件那会检查是否$_SESSION['login'] == true
,但看到会话变量只是cookie,有人可以很容易地设置自己的权利?要检查用户是否已通过身份验证,另一种方法是检查吗?替代使用会话变量进行身份验证
回答
会话与Cookie大不相同。所有数据都存储在服务器中的会话文件中,cookie本身仅存储浏览器标识符以与服务器上的正确会话文件相匹配。不管怎么样,你都需要cookies,所以我相信你可以安全地使用会话来检查经过身份验证的用户。
大声笑,相同的开头句子,比我早12秒。 –
@迈克尔哈哈是啊,我刚刚编辑和更改,使其更容易混淆:) –
会话变量不仅仅是cookie。客户端浏览器收到一个cookie,将其附加到服务器上的会话中,但只有服务器可以设置和读取$_SESSION
的变量。
虽然客户端可以通过cookie向服务器传递他们想要的任何信息,但会话ID难以猜测(尽管不是不可能),从而难以劫持其他用户的会话。
防止劫持会话的常用方法是在$_SESSION
中存储用户IP地址,用户代理字符串或其他可识别字符串的指纹。这也可以是您生成的随机令牌字符串,并发送到客户端,同时也存储在$_SESSION
中。在下一个表单文章中,您希望令牌以隐藏的输入形式发送,并与存储在服务器上的令牌相匹配。
但看到会话变量的 只是饼干,有人可以轻易 设置自己的权利?
错!会话cookie将只包含token of the session,会话本身及其值将驻留在服务器上。 Cookie将使用的令牌值将用于查找会话。
什么是另一种方式去 检查,看看如果用户已经 认证?
将认证存储在数据库中。
如果您通过HTTPS进行身份验证,则Cookie将受到保护。另外,当你设置一个会话时,你正在处理客户端一个带有随机会话UUID的cookie,该UUID将转换为服务器上的关键值存储,客户端不能只设置“login = true”并获得访问权限。
HTTPS只保护通过登录表单(或任何其他形式)发送的数据。它不能保证用户提供他的会话标识符的方式。 – fyr
- 1. 替代ClientLogin进行身份验证
- 2. 在asp.net中使用会话进行用户身份验证c#
- 3. 玩!框架:使用会话进行身份验证
- 4. 如何使用Perl进行身份验证和会话管理?
- 5. 使用会话在PHP中进行身份验证
- 6. 使用会话[:user_id]进行Rails身份验证的安全性
- 7. 使用coldfusion会话ID进行SSO身份验证
- 8. 使用会话存储身份验证?
- 9. 身份验证:JWT使用与会话
- 10. ASP.NET身份验证会话
- 11. CherryPy会话身份验证?
- 12. 使用Facebook PHP SDK进行身份验证后传递变量
- 13. 使用服务器变量进行身份验证
- 14. 用户通过会话cookie进行身份验证后,Ning proxy_pass
- 15. 通过会话或cookie进行用户身份验证?
- 16. 用asp.net进行Azure AD身份验证身份验证
- 17. 使用Kong进行身份验证
- 18. 使用Yelp进行身份验证
- 19. 使用ManifoldCF进行Apache身份验证
- 20. 使用SOAP进行laravel身份验证
- 21. 使用REST API进行身份验证
- 22. APOP使用libcurl进行身份验证
- 23. 使用OpenRasta进行身份验证
- 24. 使用Firebase进行NodeJS身份验证
- 25. 使用DropWizard进行OAuth身份验证
- 26. 使用Google OAuth进行身份验证
- 27. 使用'before_filter'进行身份验证
- 28. 使用VB.NET进行LDAP身份验证
- 29. 使用WP7进行Facebook身份验证
- 30. 使用AFOAuth2Manager进行身份验证
阅读以下内容:http://stackoverflow.com/questions/1221447/what-do-i-need-to-store-in-the-php-session-when-user-logged-in/1225668#1225668 –