2017-03-03 55 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,會話可能會丟失,因此我不會使用它。