3

我在我的网站上遇到了一个巨大的问题,我花了几个月的时间来解决这个问题。问题在于用户能够使用诸如 firebug 之类的工具和其他类似方法来更改我网站的 HTML。问题是,如果用户更改了表单的一部分,他们可能会更改消息/帖子/等的发送者。

我目前的大部分评论、消息、帖子和其他表单都是这样设置的(至于发送用户信息以供使用:

 <form rel="1"></form>

我将rel用作存储内容的用户 ID 的地方。所以这将转到 ID 为 1 的用户。那么问题是如果用户在 html 中将其更改为喜欢 5,然后提交表单它将转到用户 5。怎么可能仔细检查这个当信息到达服务器时,如果它发生了变化或其他什么,它就不会通过。

我唯一能想到的就是对用户 ID 或其他内容进行哈希处理,并将该值存储在 rel 中。这不会解决问题,但是它可能会使某人更难弄清楚。

4

2 回答 2

2

将用户 ID 存储在会话中。依赖用户输入的重要信息是一个糟糕的主意。

session_start();
$_SESSION['user'] = array();
$_SESSION['user']['id'] = $result_set['id']; // or however else you may have retrieved their UID
$_SESSION['user']['name'] = $result_set['username']; // STORE ALL THE VARIABLES!!!
于 2012-12-31T18:03:34.467 回答
0

你应该考虑这样做

  1. 用户 ID 和用户应明文存储
  2. 密码应使用 SHA 和盐进行散列,盐的长度应与 SHA 散列的长度相等(256、512 等)
  3. 使用会话密钥,存储在服务器和 $_SESSION 中的随机字符串,如果 $_SESSION['userid'] 匹配数据库用户 ID 并且 $_SESSION['session_key'] 匹配数据库 session_key ,它是安全的
  4. 在会话上使用过期计时器,存储会话应过期的时间值,始终检查会话是否有效或是否过期
  5. 任何 DOM 元素中都不应将任何身份验证数据存储为纯 html,它应存储在会话或最坏情况下的 cookie 中
于 2012-12-31T18:08:40.727 回答