如何防止PHP中的URL变量被篡改?

时间:2011-07-15 23:48:54

标签: php web-applications cakephp security

我正在CakePHP中构建一个Web应用程序,授权用户可以添加,更新,删除记录。在某些控制器中添加记录,我的URL结构如下:

records/add/id_of_parent_record/secondvar:another_decision_dependent_value.

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

3 个答案:

答案 0 :(得分:3)

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

另一方面,如果需要修改某些内容,则应使用身份验证(HTTP身份验证被认为更理想),以便只有有权修改的用户才能进行修改。它通常也是通过PUT / POST / DELETE请求完成的。在PHP框架中,POST将是最简单/最常见的,因为PUT和DELETE需要花费更多的精力来完全支持PHP。

答案 1 :(得分:2)

始终对此类内容使用POST请求(创建,更新,删除),因此不会意外发生。 但即使你使用POST,也不要相信用户输入。

另请查看Post/Redirect/Get

答案 2 :(得分:0)

除了POST和Post / Redirect /获取建议之外..一般来说:

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