创建安全的临时删除文件链接的最佳方法是什么?
假设没有用户帐户,但有人上传文件后来想删除它。
使用密钥散列为它们生成删除链接:
example.com\page\myfile?delete=4Qcp4wTq2UQFR3NiRpGgXCsgQVqT
如果查询哈希与数据库中的哈希匹配,那么PHP / Laravel将删除文件和数据库记录:
File::delete($file);
$record->delete();
Google云端硬盘使用28个随机字符网址进行安全文件共享。这就是我得到这个想法的地方,但我不确定它是否真的应该如何完成,或者是否需要更多步骤。
某人或机器人有多大可能猜到该网址或偶然访问该网址? 密钥哈希是否也与会话ID匹配,然后在会话到期后不再处于活动状态?
答案 0 :(得分:1)
恕我直言,如果您没有用户帐户(所以没有身份验证),查询字符串中的令牌是一个很好的解决方案,可能是唯一的解决方案。
如果令牌足够长,那么非常不可能有人花时间和资源来猜测你的令牌。此时唯一的弱点是对用户的令牌分发(即其他人可以阅读邮件)。
如果您需要令牌过期,只需添加一个字段“expire_at”,在同一个表中存储令牌,以检查令牌的有效性。如果有人删除cookie,会话可能会丢失,因此我不会使用它。