我正在寻找有关如何使用Cookie最佳地将身份验证与PHP结合使用的提示和想法。
每个php脚本是否应该检查cookie值以确定用户是否仍然登录?是否应该有一个脚本执行此检查并包含来自其他每个脚本的脚本? php可以从文件系统的不同深度看到cookie值吗?
赞:blahblahblah.com/和blahblahblah.com/login /
他们都可以读取cookie吗?
关于一篇文章的很多问题,但谢谢!
答案 0 :(得分:3)
客户端没有任何安全措施。
您可以在任何浏览器上轻松更改Cookie上的登录标记。因此,建议在php的$ _SESSION
上保存与登录相关的数据如果您希望延长会话时间,只需查看session_set_cookie_params()
。
默认情况下,相同的会话将用于当前域和该域上的所有路径。因此,它对于blahblahblah.com/和blahblahblah.com/login /
都是可读的当用户登录时,在会话中保存用户名和密码的哈希值。
在每个脚本的开头,使用数据库中的一个验证会话的用户名和密码。如果正确,则设置一个标志(例如$ userLoggedIn = true)以在服务器端指示用户已登录。否则为false。
答案 1 :(得分:2)
一些想法,没有特别的顺序:
答案 2 :(得分:0)
让一个脚本执行会话/登录检查并将其包含在安全页面中是一个好主意。 AS的深度,您可以在setcookie()中定义,如果目录参数设置为“/”,那么它可以全部访问。
通常使用会话而不是cookie是一个好主意,因为它更安全,但您可以决定基于cookie中的加密数据构建自己的会话系统,这也可以工作,但是会话,存储数据的会话建议在服务器端使用。
答案 3 :(得分:0)
Cookie是每个域名,因此无论您的目录结构有多深,都可以正常阅读Cookie(只要您的域名保持不变 - 请注意这意味着www.example.com和example.com可以是不同的cookie)。
我建议进行身份验证检查,将Cookie中的会话ID与例如登录用户的数据库表及其会话ID进行比较 - 此检查可以在其自己的方法/包含文件中包含()' d在每页上。这样,将在每个页面加载时执行检查。 NB 这是基本的,并且有更安全的方法 - 其中一些已在此处的其他评论中提及。
作为Mauris said,客户端没有任何安全 - 不要使用cookie来存储“logged_in”值,你检查它是否为真/假!