请问,我把用户 id 保存到 session,调用时有什么安全问题吗?

2021-08-24 13:48:06 +08:00
 wfdaj

如题,session 里保存了 用户 id,用户名和邮箱,在显示用户信息的视图页面,经常这样调用:

<?php if (!empty($_SESSION['userId']) && ($_SESSION['userId'] === $this->user['uid'])) { ?>

这会有什么安全问题吗?

如果有,在视图页面,我应该如何安全的读取用户信息呢?感谢!

2573 次点击
所在节点    PHP
8 条回复
Xusually
2021-08-24 14:09:19 +08:00
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 被偷了,那什么都不安全了。
murmur
2021-08-24 15:22:58 +08:00
没问题的,jwt 就是类似的机制,但是必须保证 uid 是加密或者可信可验证的,比如改了 uid 整个 token 解密校验不过
murmur
2021-08-24 15:23:54 +08:00
看错了,我以为是 cookies 中的 session 字符串
wfdaj
2021-08-24 15:38:06 +08:00
感谢 @Xusually @murmur
kaneg
2021-08-24 21:41:57 +08:00
user id 这种不敏感的信息存在 session 是正常的做法。
Rache1
2021-08-25 09:42:02 +08:00
后面这个 $_SESSION['userId'] === $this->user['uid'] ,你这个 $this->user 是凭空来的吗?
fatbear
2021-08-25 18:45:44 +08:00
加密,避免通过修改 cookie 导致越权
wfdaj
2021-08-28 19:20:27 +08:00
@Rache1 用的框架,就是这种写法 😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797690

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX