我刚开始使用CakePHP框架,准确地说是2.0。我阅读了大部分文档和示例,并看到了博客教程。
http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html#editing-posts 在教程的“编辑帖子”部分,我看到他们使用隐藏字段来记住帖子ID。由于客户端的修改,这不是一种不好的做法吗?
我处理此方法的方法是删除隐藏字段,并在提交表单时将post id添加到POST数据,然后再保存并验证它。这是正确的方法吗?
答案 0 :(得分:1)
是的,如果您担心篡改数据,这几乎是正确的方法。 如果记录属于某个用户,则需要确保该用户不能仅将id替换为其他用户的记录。 安全组件也没有帮助(至少在某些方面)。
在这里阅读更多相关信息: http://www.dereuromark.de/2010/09/21/saving-model-data-and-security/
答案 1 :(得分:1)
SecurityComponent将帮助隐藏字段。它会检测到它检测到的包含被篡改的隐藏输入的任何请求,但它不会对下拉输入执行任何操作。您可以在firebug中打开一些AddUser表单并添加一个选项:
<option value="superadmin">SuperAdmin</option>
进入“角色”下拉列表,在表单上选择它,并在提交后,CakePHP将创建一个新的SuperAdmin。因此,最好的政策仍然是不信任客户。客户是一群森林狼,你的服务器是一群兔子兔子。将这两者分开。
答案 2 :(得分:0)
您所要做的就是将SecurityComponent添加到AppController :: $ components变量中,以防止客户端更改隐藏字段。