【发布时间】:2015-08-13 22:35:48
【问题描述】:
通过 ajax 将对象的标识符传递给服务器/控制器的最佳方式是什么(例如,我们在站点“book/edit/mybookname”上,以及如何通过 ajax 更新这本书实体“mybookname”)?
我想到了一些方法,想知道最常见和最安全的方法是什么:
1) 将书的 ID 传递给控制器
-> 问题:可以使用浏览器的控制台更改 ID 变量/字段
2) 将当前 URL (window.location.href) 传递给控制器,并从控制器中的 url 中提取名称
-> window.location.href 无法通过控制台更改..?
我知道我必须检查服务器端,如果用户应该有权编辑实体。但是如果他有不止一本书,他可能会将 id 参数更改为他拥有的另一本书,然后他会在后台更改另一本书的演示文稿,而不是他当前正在浏览的那个。
【问题讨论】:
-
可以在用户访问
book/edit/mybookname时设置会话变量。但我真的不明白这一点,如果用户想弄乱他/她自己的收藏,那是他们的问题 IMO。 -
您好 jeroen,会话变量不会有帮助,您可以打开不同书籍的多个标签。好的,所以常用的方法是:检查访问权限,但是当登录的用户试图操纵表单/参数时,最后他只能把他的书搞砸。
-
确保它不能被操纵的唯一方法是使用一个不是来自用户但存储在服务器上的值。但正如您所注意到的,这也可能失败。所以是的,他们的收藏,他们的问题,只要他们只能访问自己的东西。
标签: php jquery ajax security parameter-passing