【发布时间】:2016-09-23 12:18:36
【问题描述】:
情况:未注册用户访问网站并发出商品请求。根据当前的数据流,此请求首先插入到 db 中,并且请求 id 将在后续页面的 url 中携带(用户可以在其中添加更多信息)。
问题:用户可以更改id。
到目前为止我所做的: 在使用 lastInsertId() 插入请求后检索 id 后,我将其存储在会话变量中,并根据 id 检查后续页面来自 $_GET。我还实现了 CRSF 保护,但是当令牌匹配时,会话令牌未设置。因此,即使用户在同一个 url 上刷新,检查也会失败。
我该如何解决这个问题?请指出我缺乏的概念。另外,当许多并发用户发出请求时,服务器会根据它的唯一会话 id 来确定哪个用户是哪个用户,这对于不同的用户来说是不同的,对吗?这种并发会不会有任何问题或漏洞?
【问题讨论】:
-
添加会话是个好方法。除此之外,您可以使用存储在配置中的一些盐手动散列 Id。您还可以使用类似日期和年份的组合作为盐,在这种情况下它会保持一天不变。将盐与 ID 一起传递并重新检查盐和会话,如果它们匹配则继续,
-
感谢@AtulBhatS!使用 mcrypt_create_iv() 可以处理盐吗?刚刚尝试对 stackoverflow 的 url 做同样的事情,它把我重定向到另一个问题。猜猜这取决于相关数据的敏感性:)
标签: php security session concurrency query-string