【发布时间】:2012-09-24 16:58:45
【问题描述】:
当用户创建帐户时,他会从数据库中获得一个唯一且自动递增的用户 ID。因此,第一个用户的用户 ID 为 1,创建的第二个用户的用户 ID 为 2,依此类推。我正在使用 PHP 会话来存储用户登录时的用户 ID,以便他们保持登录状态。在阅读了几篇文章之后,我明白你永远不希望 PHP 会话像我所做的那样容易受到攻击(这很容易让黑客确定每个用户的 php 会话用户 ID。所以我的问题是,如果我要使用 md5 或河豚基于他们唯一的用户名来为每个用户生成一个用户 ID,那会使 PHP 会话安全吗?
【问题讨论】:
-
PHP 会话会为您生成自己的 ID 和所有内容。除此之外,您无需做任何事情。如果您只是将 ID 存储在会话数据中,则没有问题。如果您要覆盖默认会话 ID,那就另当别论了……而且是个大问题。
-
我将从与该用户关联的数据库中获取的 id 存储到会话中。所以
$session['user_id']引用了从数据库中抓取的用户ID。 -
那么,你的实现就没有问题了。
-
非常感谢。我是否需要担心这些数据会显示在网站上,例如照片名称或网址?
-
确保您的 PHP 服务器正在运行 Suhosin 补丁。此补丁为 PHP 添加了许多安全功能,对于任何生产 PHP 站点都应该被认为是强制性的。它所做的一件事是自动加密所有 PHP 会话数据。您的 PHP 代码不需要做任何不同的事情,但您的会话数据是安全的,不会受到服务器上的黑客攻击。 (Suhosin 还添加了一堆其他东西,都是好东西,但那是与问题相关的东西)
标签: php session security session-variables