如何在CakePHP中生成安全的私有URL?

时间:2012-12-30 13:06:42

标签: php cakephp cakephp-2.0

我喜欢为用户创建一个安全的URL(删除和编辑链接)。

例如,这是我的实际网址

http://localhost/project/blogs/delete/1/test-title

我想做的是,

http://localhost/project/blogs/delete/4324143563443/test-title (some hash made of salt+user auth id)

我的主要目的是创建一个安全哈希以及删除和编辑方法的URL。 有没有可用的自定义方法? 我在CakePHP安全函数http://book.cakephp.org/2.0/en/core-utility-libraries/security.html中搜索并且不确定它是否是正确的方法,或者不确定使用哪种算法)

2 个答案:

答案 0 :(得分:7)

首先,虽然我不太清楚如何/为什么要这样做,但听起来你想通过模糊他们的URL来“保护”这些链接。这被称为“Security through Obscurity”,并且通常不赞成。

在Cake(和大多数应用程序)中,实现此目的的通常方法是允许用户登录(请参阅:Auth Component)然后,例如,在您的删除操作中(即用于URL /删除/ 1)将检查请求是否有有效的用户会话,并且用户具有足够的权限来删除。

虽然我强烈建议否则,如果您确实希望创建这些晦涩的URL,那么您应该使用Security::hash();。这个问题是你不能只是哈希id然后直接从哈希中确定id(这就是整点!)。相反,您需要将哈希值存储在数据库中,然后查询哈希值(每个帖子可能有一个唯一的哈希值,可以从id或只是随机数据生成)。

答案 1 :(得分:3)

如前所述,“默默无闻的安全”并不是很聪明。尽管如此,最简单的方法是将UUID用于表的主键而不是数字自动增量。