2017-03-03 10 views
0

安全な一時的なファイル削除リンクを作成するにはどうすればよいでしょうか?安全なキーハッシュを作成するリンクを削除する

ユーザーアカウントがなくてもファイルをアップロードして後で削除したいとします。

File::delete($file); 
$record->delete(); 
:クエリハッシュは、データベース内のものと一致する
example.com\page\myfile?delete=4Qcp4wTq2UQFR3NiRpGgXCsgQVqT

場合には、PHP/Laravelは、ファイルやDBのレコードを削除します:

削除リンクは、キーハッシュでそれらのために生成されます

Googleドライブは安全なファイル共有にランダムな28文字のURLを使用します。それは私がアイデアを得たところですが、実際にやっているかどうか、もっと多くのステップが必要かどうかは分かりません。

誰かやボットがそのURLを推測したり、偶然にそれを訪問する可能性はありますか?
キーハッシュもセッションIDと一致する必要がありますか?

+1

[a-zA-Z0-9]からの28文字は、可能な組み合わせは1.5380389e + 50です。それを推測して幸運。 – BrokenBinary

+0

@BrokenBinaryボットは、偶然に1つのヒットになるまでランダムな組み合わせを実行することは可能ですか? –

+1

はい、ほとんどありません。あなたの28文字のトークンが100万個存在すると、事故によってボットを発見する確率は、6.5017861e-45ではまだ1です。もしあなたがそれをさらに困難にしたいのであれば、もっと長いトークンを使うことができます。 – BrokenBinary

答えて

1

IMHOユーザーアカウントがない(認証されていない)場合は、クエリ文字列内のトークンが良い解決策になります。

トークンの長さが十分長い場合、トークンを推測するために費やす時間とリソースを誰かが持っている可能性は非常に低いです。この時点での唯一の弱点は、ユーザーへのトークン配布(つまり、他のユーザーがメールを読むことができる)です。

トークンが期限切れになる必要がある場合は、フィールド「expire_at」を追加するだけで、トークンを保存して同じテーブルにトークンの妥当性をチェックします。セッションが失われる可能性があります。

関連する問題