我需要一種方法來保護下載器看到文件的下載URL。PHP保護下載
這個想法是,用戶在付費後被給了一個下載鏈接,但是阻止他們在沒有付費的朋友之間傳播URL。
這有什麼常見的解決方案?可能更改文件名?
(我可以做PHP和MySQL這個帖子是真的方法)
我需要一種方法來保護下載器看到文件的下載URL。PHP保護下載
這個想法是,用戶在付費後被給了一個下載鏈接,但是阻止他們在沒有付費的朋友之間傳播URL。
這有什麼常見的解決方案?可能更改文件名?
(我可以做PHP和MySQL這個帖子是真的方法)
如果用戶在您的網站上有一個帳戶,如果他們支付了下載,請在您的數據庫中存儲。然後給他們一個鏈接,比如download.php,在那裏你確認他們是否付費,如果是的話,給文件做一個位置。例如,對於一個.pdf:
if($userpaid === true) {
$filename = 'congrat-you-paid-it.pdf'; //Name to display
$file = './download/pdf/secretlink.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="'.$filename.'"');
header('Content-Length: ' . filesize($file));
@readfile($file);
exit;
}
一種解決方案可能是在運行時使用SESSION
或類似的臨時存儲並生成下載網址。因此,再次點擊該網址可能無法正常工作。
此外,不應允許直接訪問這些文件。
這是否可以通過電子郵件向他們發送鏈接?不太熟悉如何做到這一點,但會查看它,謝謝 – user961882
爲了清楚起見,這意味着:爲每次購買的每個文件創建一個不同的URL。對於同一文件的其他客戶而言,這些鏈接永遠不會相同。我也會說:將它們存儲在數據庫中。通過這種方式,您可以通過電子郵件將鏈接發送給用戶,並且一旦他下載了文件,就可以使鏈接無效並添加一些附加信息,例如下載的日期和時間。 – insertusernamehere
@ user961882,是的,你可以創建這些鏈接並通過郵件發送。正如前面的評論中所建議的那樣,您可以將這些URL存儲在數據庫中,另外您可以將它們與用戶相關聯,以便其他用戶無法下載...並下載用戶必須登錄(當然) –
使用會話方便快捷,更好的安全性,你可以做的是:
把實際的文件中的一個單獨的文件夾,並把一個的.htaccess其中的 只允許腳本訪問該文件。
然後生成一個隨機的唯一變量
然後,讓這個名稱的臨時文件,並給予相應的鏈接到 客戶
最後運行cron作業刪除不必要的創建的文件。
可能不應該這樣做。沒有必要物理地操作文件。你可以通過保持文件名不變,然後通過一個唯一的字符串路由到它們來完成同樣的事情,只允許使用一次。 – 1mike12
同意@ 1mike12,是一個古老的答案。接受的答案更有意義。 –
創建一個令牌。存儲在您的最後並使用文件URL發送。當用戶點擊URL與令牌匹配並允許下載時,然後從存儲中刪除令牌。 每次註冊用戶想要下載時,您都必須生成新的令牌。
您可以根據下載次數,IP地址以及可能的時間限制下載URL,這樣購買了您的下載的用戶只能訪問該文件,並且當他們給朋友時它不起作用:)
首先你可以測試這個免費的工具,讓你在FLY上創建一個受保護的鏈接http://protectedlinks.net/PLSafe/index.php
你總是可以使用重寫屏蔽URL。 – 2013-08-21 11:23:34
@remyabel實際上並沒有保護文件。 – Prix
@remyabel天才!唯一的問題是,最終用戶仍然會看到*一個URL *並能夠從該URL *下載該文件。他並不關心它在服務器內部如何被損壞。 – deceze