php - 创建安全 key 哈希删除链接

标签 php mysql laravel security laravel-5

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

假设没有用户帐户,但有人上传了文件,后来想要删除它。

使用 key 哈希为他们生成删除链接:
example.com\page\myfile?delete=4Qcp4wTq2UQFR3NiRpGgXCsgQVqT

如果查询哈希与数据库中的哈希匹配,则 PHP/Laravel 将删除该文件和数据库记录:

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

Google 云端硬盘使用 28 个随机字符 URL 来实现安全文件共享。这就是我的想法,但我不确定实际上是否应该这样做,或者是否需要更多步骤。

某人或机器人猜测该网址或意外访问该网址的可能性有多大?
key 散列是否也应该与 session ID 匹配,然后在 session 过期后不再处于事件状态?

最佳答案

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

如果 token 足够长,那么某人就不太可能有时间和资源来猜测您的 token 。此时唯一的弱点是向用户分发 token (即邮件可以被其他人阅读)。

如果您需要 token 过期,只需在存储 token 的同一个表中添加一个字段“expire_at”,以检查 token 有效性。如果有人删除 cookie, session 可能会丢失,这样我就不会使用它。

关于php - 创建安全 key 哈希删除链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42590151/

相关文章:

laravel - 从 axios 响应中获取数据(Vuejs)

php - Ajax 方法显示错误的输入

php - 将多个键分配给数组中的相同值

php - MySQL连接两行,两个表,具有相同的字段

php - 如何在多行上使用相同ID连接MYSQL中的2个表

sql - 如何使用 Eloquent 在 Laravel 中编写以下 SQL 查询?

php - php中的页面 session ,我想存储用户在特定页面上花费的时间...?

php - mysql查询中的二维数组

mysql - 按位掩码中设置的位数排序

laravel - 如何从 Laravel 中的作业 ID 获取排队的作业?