使用PHP保护表单

使用PHP保护表单,php,jquery,ajax,forms,Php,Jquery,Ajax,Forms,我有一个带有三个输入字段的简单表单,用于将消息发布到特定组中: 文本输入 组id为的隐藏字段 带标记的隐藏字段 提交使用Ajax完成,并发送输入文本和隐藏字段 我所做的: 验证用户发送的文本。 我检查令牌是否与为该表单创建的会话令牌匹配 问题是: 用户可以更改隐藏id(组id),post将插入错误的组 我可以删除隐藏id,并从会话中获取组id。但我不确定这是否安全是的,这是安全的,会话变量驻留在服务器上,而不是客户端。尽管如此,如果用户可以在某个组下,您可以在提交时查询或在数据库中查找,而不

我有一个带有三个输入字段的简单表单,用于将消息发布到特定组中:

  • 文本输入
  • 组id为的隐藏字段
  • 带标记的隐藏字段
提交使用Ajax完成,并发送输入文本隐藏字段

我所做的: 验证用户发送的文本。 我检查令牌是否与为该表单创建的会话令牌匹配

问题是: 用户可以更改隐藏id(组id),post将插入错误的组


我可以删除隐藏id,并从会话中获取组id。但我不确定这是否安全

是的,这是安全的,会话变量驻留在服务器上,而不是客户端。尽管如此,如果用户可以在某个组下,您可以在提交时查询或在数据库中查找,而不是将其保存在会话中。如果您有其他表单或页面,用户可以访问并更改其组,则会话中的组id将无效。

是,用户可以打开两个组,然后发布到第一个组,但组id的会话=第二个组。这是错误的。如果用户可以在多个组中,那么表单上仍然可以有一个隐藏的组id。您只需查询用户的所有组id,并检查发布的组id是否在这些id中。但用户可以访问所有组。您担心用户可能会将隐藏的组id更改为他想要的任何内容,对于超级管理员,就说1。但正如我所说的,您可以获取所有用户的组ID,并检查它是否在该列表中。如果这是一个大问题,您必须控制用户如何加入组。如果组具有不同的权限,您可能还需要执行一些复杂的验证。