我有一个有两个区域的站点。一种适用于金卡会员,另一种适用于银卡会员。当用户登录时,我创建了两个会话变量;每个区域需要两个会话变量才能访问。
金牌:session-userId 和 session-gold
银牌:session-userId 和 session-silver
这是安全的吗?如果黑客窃取或将会话白银更改为会话黄金怎么办?然后他们可以访问不同的区域,不是吗?
我有一个有两个区域的站点。一种适用于金卡会员,另一种适用于银卡会员。当用户登录时,我创建了两个会话变量;每个区域需要两个会话变量才能访问。
金牌:session-userId 和 session-gold
银牌:session-userId 和 session-silver
这是安全的吗?如果黑客窃取或将会话白银更改为会话黄金怎么办?然后他们可以访问不同的区域,不是吗?
有人不能只更改 php 创建的会话,例如 can cookie。想想看,cookie 被交给他们的机器,会话存储在服务器上并在断开连接时丢失。您应该确保清理所有输入,否则您的会话开始可以被操纵
来自黑客的安全是一个非常广泛的领域,而且可能非常棘手。您应该始终假设黑客可以破坏您的代码并获得访问权限。
因此,我将使用数据库而不是会话来确定用户权限,并且我不会使用纯会话值而是加密的值。也许你可以做这样的事情:
$_SESSION['user_level'] = sha1($userId . "session-silver");
然后在每次需要时比较正确的哈希值。请记住,通过默默无闻的安全性并不是一种安全的方法,因为黑客可能会窃取您的源代码。
免责声明:这个建议不是为了防弹,而是作为对当前代码的一个小而容易的改进,而不是太复杂而无法快速实施