2017-03-03 56 views
0

创建安全的临时删除文件链接的最佳方法是什么?创建安全密钥哈希删除链接

说出是否没有用户帐户,但是有人上传文件,稍后想删除它。

删除链接为他们产生了关键的哈希:
example.com\page\myfile?delete=4Qcp4wTq2UQFR3NiRpGgXCsgQVqT

如果查询哈希相匹配的数据库,然后PHP/Laravel将删除的文件和数据库记录:

File::delete($file); 
$record->delete(); 

Google云端硬盘使用28个随机字符网址进行安全文件共享。这就是我得到这个想法的地方,但我不确定它是如何实际完成的,或者是否需要更多步骤。

有人或机器人可能会猜测该URL或偶然访问它的可能性有多大?
密钥哈希值是否也匹配会话ID,然后在会话过期后不再处于活动状态?

+1

来自[a-zA-Z0-9]的28个字符是1.5380389e + 50种可能的组合。祝你好运,猜测。 – BrokenBinary

+0

@BrokenBinary机器人有可能只是通过随机组合运行,直到偶然碰到一个机器人为止。 –

+1

是的,但不太可能。如果你的28个人物代币中有100万人存在,那么在6.5017861e-45中发现一个人偶的机器人的可能性仍然是1。如果你想让它变得更不可能,你可以使用更长的令牌。 – BrokenBinary

回答

1

恕我直言,如果你没有用户帐户(所以没有身份验证)查询字符串中的令牌是一个很好的解决方案,可能是唯一的一个。

如果令牌足够长,非常不可能有人花费时间和资源来猜测您的令牌。在这一点上,唯一的弱点是向用户分发令牌(即邮件可以被其他人阅读)。

如果您需要令牌过期,只需添加一个字段“expire_at”,在存储令牌的同一张表中检查令牌有效性。如果有人删除Cookie,会话可能会丢失,因此我不会使用它。