我正在开发一个论坛,如网站使用php和mysql。用户可以提出问题,其他用户可以回答问题。所以我的数据库表结构如下所示。
两个表问题和答复:

现在我已经设计了一个页面来查看问题、回复和发布另一个回复。因此,当我在replies表中插入一行时,我也必须传递问题id。它可以通过表单中的隐藏元素传递问题id来简单地实现。但这是不安全的,因为用户可以更改隐藏的值,并且回复将以错误的问题结束。另一种解决方案是使用会话变量来存储用户当前查看的问题id。但这也是不可能的,因为用户可能会打开多个选项卡,这将导致会话变量出现问题。
那么我该如何解决这个问题呢?如果你能给我一个主意,我将不胜感激。
PS -著名的论坛网站是如何解决这个问题的?
发布于 2021-01-23 12:20:00
我有另一个隐藏元素,它有一个散列版本的id,在后端检查散列是否匹配(就像你在数据库中检查密码一样,我假设你知道这是如何工作的,如果你不知道,我可以解释)
为什么用户编辑请求对不同的问题发表评论又有什么关系?我能想到的唯一原因是,一些问题被限制为不允许/某些评论,在这种情况下,你应该已经在后端处理了。
正如danblack评论的那样,你应该总是假设用户的输入是不值得信任的,你应该总是在后端像这样处理验证。
https://stackoverflow.com/questions/65855549
复制相似问题