我知道会话用于跟踪客户端的操作,或者只是像登录一样,如果有会话,显示内容,如果没有,那么他就是访客,我们在此会话中存储值或属性
到目前为止,我总是将用户ID存储在会话中,作为一个主要属性,可以帮助我在其他页面中识别他。
$_SESSION['userID'] = $userID; //example: 100, 101, 102...
我可以根据此ID检索此ID并从数据库中获取数据。
$userID = $_SESSION['userID'];
$query = "SELECT * FROM posts WHERE user_id = ".$userID;
这是使用Session的正确方法吗?该ID不应存储在Session中?任何安全风险?如果不应该存储,那么如何识别用户?
答案 0 :(得分:1)
是的,在会话中存储userID就好了,只是不要用它来验证用户,而是使用身份验证ID。
除此之外不应存在安全风险。
只是不要用它们来存储敏感信息(密码和类似信息)。
答案 1 :(得分:0)
会话永远不会转移给用户。浏览器获取一个名为PHPSESSID的cookie,其中包含会话的ID。
这意味着:无论您在会话中存储什么,它都会完全保留在服务器上。
从这个角度来看,会话中的数据没有安全问题。你可以随意存放。
答案 2 :(得分:0)
在会话范围内尽可能少地存储信息。
原因在于,对于现代浏览器,同一会话在同一浏览器实例中的选项卡之间共享,或者在单独的浏览器实例中共享。换句话说,如果你在firefox中打开你的应用程序,然后再次启动firefox,新的firefox窗口将从旧的继承会话。
现在不好的部分。如果您的浏览器1中有session.abc = 123,然后在浏览器2中执行某些操作将其更改为456,然后返回浏览器1并发出某种类型的页面请求(如提交表单),将在该请求中使用session.abc的新值。
我们被这个烧了。人们无意中更新了错误的记录。