web应用程序-如何防止PHP中的URL变量篡改



我正在CakePHP中构建一个web应用程序,授权用户可以添加,更新,删除记录。在一些控制器中添加记录的url结构是这样的:

records/add/id_of_parent_record/secondvar:another_decision_dependent_value.

我担心的是用户可能会篡改这些GET变量,这将导致整个记录的损坏。我知道我可以使用这些变量的会话,但我正在寻找最好的方法。请分享你的知识和经验。

一般的经验法则是URL变量(任何类型,包括URL中的所有内容)应该只用于选择和显示变量。这样,如果用户搞砸了什么,那又怎样?他们搞砸了,你不能保证他们的支持。它们不容易通过粘贴错误的内容来篡改后端数据(这或多或少是RESTful GET背后的思想)。

另一方面,如果需要修改

,则应该同时使用身份验证(HTTP身份验证被认为更理想),以便只有具有修改权限的用户才能修改。它通常也通过PUT/POST/DELETE请求来完成。在PHP框架中,POST将是最简单/最常见的,而PUT和DELETE需要更多的努力才能在PHP中得到完整的支持。

总是使用POST请求这类东西(创建,更新,删除),所以它不会发生意外。但是,即使使用POST,也不要相信用户输入。

也可以看看Post/Redirect/Get

除了POST和POST/Redirect/Get建议…一般:

永远不要相信你在HTTP请求中收到的任何信息(包括GET参数,post数据,cookie和HTTP头)。始终确保用户具有对相关数据对象执行每个操作的权限,并且在接受和处理数据之前,始终在服务器端验证数据是否尽可能合理。

最新更新