CakePHP2.1在url中删除id

时间:2012-10-25 13:38:13

标签: url cakephp-2.1

我正在使用cakephp 2.1,我写了一些动作,如查看,编辑和删除。 在url中它看起来像'view / 1','edit / 1','delete / 1',这样我就可以在url中更改id。 我不想在url中更改它,它不应该允许编辑ID。请帮我这样做。这项工作会更加明显。

1 个答案:

答案 0 :(得分:0)

好的......我想我理解你的问题。您担心如果人们可以编辑ID,因为它们在URL中可见,那么它将成为安全威胁吗?

首先,查看行动:

如果用户有权查看具有该特定ID的记录,则应检查服务器端。如果他们不这样做,那么你可以给出错误。如果他们这样做,那么让他们查看它 - 不要担心他们是如何到达那里的,他们是否在URL中编辑了ID。如果他们有权查看记录,只需让他们查看即可。

其次,删除操作:

同样,就像查看操作一样,您应该检查服务器端以查看用户是否有权删除记录。如果他们这样做,那就让他们删除吧!如果他们在URL中编辑了ID,请不要担心。如果用户没有删除记录的权限,那么服务器端检查将阻止他们,即使他们已经在URL中编辑了ID。

第三,编辑行动:

这稍微复杂一些,但仍然很容易。我假设您正在使用HTML表单编辑记录,并通过POST提交。好的,因此URL中的ID确定要获取和编辑的记录。与查看和删除一样,您应该进行服务器端检查以确保用户有权编辑该项目。如果他们有权限,则返回表格。

表单加载后,浏览器中显示的URL并不重要。表单提交的URL以及表单提交的数据很重要。现在,默认情况下,编辑表单将ID存储在隐藏的输入字段中。用户可以更改该ID,从而更改他们正在编辑的记录。

要防止这种情况,请使用CakePHP的安全组件。您需要做的就是包含组件,CakePHP将在加载时自动在表单上放置一个哈希值,它将在提交表单时再次检查。如果用户编辑了隐藏的输入字段,则此检查将失败,并且CakePHP将不允许编辑继续。

请注意,要以这种方式使用安全组件,您必须使用CakePHP的表单助手(您可能已经使用过)来构建表单。

最后一点......有时人们对于在数据库中看到ID的人有点偏执 - 因此不希望它们显示在URL或其他任何地方。但是,几乎在所有情况下,ID都没有“秘密”。谁看到它们并不重要。它们只是一种用于应用程序和数据库的方法来识别记录。只要您的应用程序是安全的,那么您应该能够向全世界展示您的所有ID,并且无需担心。