如题,session 里保存了 用户 id,用户名和邮箱,在显示用户信息的视图页面,经常这样调用:
<?php if (!empty($_SESSION['userId']) && ($_SESSION['userId'] === $this->user['uid'])) { ?>
这会有什么安全问题吗?
如果有,在视图页面,我应该如何安全的读取用户信息呢?感谢!
1
Xusually 2021-08-24 14:09:19 +08:00 1
session 是保存在服务器端的,具体是存在磁盘上还是别的比如 memcache 之类的是看你 php 的环境配置:
https://www.php.net/manual/zh/session.configuration.php#ini.session.save-handler 简单来说,一般情况下,服务端会在 session 开始的时候,给客户端浏览器种一个 cookie,标记 session id,以后请求的时候,带着这个 session id 过来,服务端会把这个 session id 对应的 session 的信息都保存下来。 本身 session 就是为了在服务端临时保存用户信息,交易信息什么的,你这么使用没什么安全问题。 当然如果你客户端的 cookie 被偷了,那什么都不安全了。 |
2
murmur 2021-08-24 15:22:58 +08:00
没问题的,jwt 就是类似的机制,但是必须保证 uid 是加密或者可信可验证的,比如改了 uid 整个 token 解密校验不过
|
3
murmur 2021-08-24 15:23:54 +08:00
看错了,我以为是 cookies 中的 session 字符串
|
5
kaneg 2021-08-24 21:41:57 +08:00
user id 这种不敏感的信息存在 session 是正常的做法。
|
6
Rache1 2021-08-25 09:42:02 +08:00
后面这个 $_SESSION['userId'] === $this->user['uid'] ,你这个 $this->user 是凭空来的吗?
|
7
fatbear 2021-08-25 18:45:44 +08:00
加密,避免通过修改 cookie 导致越权
|