cakephp - 如何授权资产?
cakephp - How to authorize assets?
在需要 Authentication/Authorization 的 CakePHP3 应用程序中,我有可能上传图像。
现在我想避免用户能够看到其他用户的图像,例如猜测图片名称等。
另外我想使用实体的 ID 作为文件名,这样也很容易猜到。
那么如何实现资产授权呢?
我会通过随机生成足够长且不可猜测的字符字符串作为新文件名来防止文件名 "guessing",就像 Facebook 上传照片时所做的那样:
因为我们根本不应该理会文件的原始名称,所以我们可以重命名用户上传的文件。例如,用户 24976 上传了一个名为 tomato12.png
的文件。然后上传脚本会将文件重命名为(例如)以下名称:
1481540475_24976_iDewM51NYrBYgnIh.png
它由四部分组成:
[timestamp]_[userId]_[randomString].[suffix]
然后,将文件名保存到数据库中。如果您查看上传目录,您可以看到哪个用户上传了哪个文件,但是无权查看目录索引的局外人永远无法猜出文件的名称。无需身份验证。
在需要 Authentication/Authorization 的 CakePHP3 应用程序中,我有可能上传图像。
现在我想避免用户能够看到其他用户的图像,例如猜测图片名称等。
另外我想使用实体的 ID 作为文件名,这样也很容易猜到。
那么如何实现资产授权呢?
我会通过随机生成足够长且不可猜测的字符字符串作为新文件名来防止文件名 "guessing",就像 Facebook 上传照片时所做的那样:
因为我们根本不应该理会文件的原始名称,所以我们可以重命名用户上传的文件。例如,用户 24976 上传了一个名为 tomato12.png
的文件。然后上传脚本会将文件重命名为(例如)以下名称:
1481540475_24976_iDewM51NYrBYgnIh.png
它由四部分组成:
[timestamp]_[userId]_[randomString].[suffix]
然后,将文件名保存到数据库中。如果您查看上传目录,您可以看到哪个用户上传了哪个文件,但是无权查看目录索引的局外人永远无法猜出文件的名称。无需身份验证。