2013-07-26 89 views
0

我已經在服務器上上傳了一些文件。提供給我的鏈接是非常簡單的i-e;無符號/符號等。如果我提供了與用戶下載數據相同的鏈接,可能會導致我的服務器遭到黑客入侵或數據丟失。現在我的問題是如何加密這種在PHP中加密URL

www.hello.com/myApp/myFile.mp3 

的url,並提供加密的網址給瀏覽器可以理解的用戶。

問候

+1

爲什麼這應該導致黑客入侵您的服務器? – bwoebi

+0

您可以使用urlEncode/rawURLEncode(任何類型的轉換也可以用作加密),但如果您說現在存在安全問題,那麼這不會解決您的問題。你應該解釋你擔心的安全問題,因爲你的問題可能更加基本。 – griffin

+0

@griffin只考慮這一種可能性。如果用戶設置如下網址:www.hello.com/myApp,他會看到上傳的文件列表,並可以下載。我想用加密文本隱藏這部分/myApp/file.txt。 – Naruto

回答

0

的URL可以被加密,但如果瀏覽器可以理解,解密這將是一個黑客微不足道的過程。我假設你想要做的是防止太多人訪問你的網址。要做到這一點,你將不得不有某種用戶登錄系統或基於IP的限制。這兩者都必須由數據庫支持。

不是直接鏈接到文件,而是鏈接到類似download.php?fileid=$some_file_id的東西,並且在數據庫中,每次下載文件時只需插入用戶標識(或IP地址)和文件標識。然後顯示文件返回給用戶,你會檢查有該文件的許多下載已經由用戶做出的,如果它小於你的閾值,例如:

SELECT COUNT(*) FROM downloads WHERE user = :user AND file_id = :id 

然後讓PHP呼應內容的文件到瀏覽器。

添加其他條款,例如在過去24小時內將其限制爲X下載等,或者您想要使用它。

其他事情可以做會被存儲在文檔根目錄以外的文件(或保護與.htaccess或類似的直接訪問),幷包括鏈接的文件名的哈希值,所以有人可能不只是做download.php?fileid=1和猜猜下一個是download.php?fileid=2

+0

Nitpicking,但是:當然,您可以加密一個網址 - 它只是一個字符串。 Plus:您不需要數據庫(並且您已經在討論基於SQL的數據庫,還有其他數據庫)來實現某個訪問系統。由於他可能通過他所說的運行apache,因此htpasswd basic auth可以執行相同的操作(包括用戶組),除了一次性的apache config/htaccess文件外,沒有任何數據庫或代碼,您甚至可以在線生成該文件。 – griffin

+0

我想我誤解了這樣做的實際目的。我在這個問題下看不到您的意見。 – Mike

+0

我認爲你實際上比OP更清楚。在你編輯之後,我剛剛提出了這個建議,因爲我認爲它完全符合他想要實現的目標(思想並不真正要求......) – griffin

1

糾正我,如果我誤解,但你是否試圖阻止某人下載文件,除非你告訴他們可以下載它?

然後,威脅是有人可能會發現文件鏈接到搜索引擎或能夠猜到它。

有幾種方法可以降低威脅的可能性。

  1. 使網址非常長,無法猜測。只需將文件重命名爲一些隨機值即可。在命令行(Linux)的

    echo http://example.com/file.mpe $(date) | md5sum d8a5e8d341135379b8ad38f1d06970be

    或者更簡單,從http://tooln.net/pw/選擇一個隨機的密碼和文件密碼的一個重命名沒有符號。要麼很難猜到。

  2. 如果您認識此人,則可以輕鬆共享密碼並在目錄上設置密碼。你可以通過Apache打開passwords per directory

  3. 通過robots.txt關閉網站的索引。