2011-12-22 82 views
1

我試圖創建一個文件夾結構如下所示:目錄結構邏輯

一級高於公共網頁目錄。唯一的唯一的關鍵(除了user_id本身)是用戶的電子郵件,因爲他們的電子郵件是他們的用戶名,所以...

問:人們能夠訪問這些目錄並獲得所有用戶的電子郵件地址?這個想法有多糟糕?你有什麼可能的選擇嗎?

謝謝。

+2

你爲什麼不把這些電子郵件存儲在數據庫中? – RageZ 2011-12-22 22:41:46

+0

我想他想使用電子郵件地址作爲文件夾名稱。 – jprofitt 2011-12-22 22:43:17

+0

您可以這樣做 - 您可能需要設置一些Apache Access規則來限制對特定目錄的訪問。 RageZ - 我不認爲上傳的文件應該放在數據庫中。也許如果你實現了一個可以工作的查找表。 – Kevin 2011-12-22 22:44:40

回答

1

絕對確保您使用散列而不是純文本電子郵件地址。這是必須的。

除此之外,我認爲這是安全的(並且不安全),因爲解決方案可以基於默默無聞的安全性(即您的安全性完全依賴於沒有人知道URL的事實 - 但是如果他們這樣做,他們可以無限制地訪問它們。)有許多潛在的漏洞 - 用戶可以爲URL添加書籤;它可以嵌入在頁面的某個地方;它可以存儲在服務器,瀏覽器和代理日誌...

+0

假設我按照Kevin的建議在上面實現了Apache Access規則。即使人們發現這些文件夾的URL(這將是電子郵件地址),他們是否能夠訪問它們,因爲它們將位於Web目錄之上的文件夾中?有人通過遍歷這些文件夾並提取所有電子郵件地址有多容易?他們是否有權這樣做? – user482520 2011-12-22 22:53:17

+0

@user如果該目錄在* web根目錄之外,則外部用戶將不能訪問該目錄。但是,這包括您的網站的用戶。那是你要的嗎? – 2011-12-22 22:54:04

+0

所以如果我提供了一個鏈接到用戶的文件,所以他們可以下載,在用戶登錄時,他們不會被用戶訪問? – user482520 2011-12-22 22:56:27

0

在PHP dir功能請看: http://php.net/manual/en/class.dir.php

如果你想在文件夾是用戶可公開訪問通過網絡,爲什麼把這些文件夾放在Web根目錄之上?另外,你可能會考慮對文件夾名稱使用某種散列,1)因爲沒有人希望他們的電子郵件地址公開顯示,並且2)顯示內部user_id可能導致漏洞利用。

0

正如Pekka剛剛回答的那樣;因爲很有可能會將鏈接發佈到論壇或類似網站,並且該帖子可能會被電子郵件地址爬行程序抓取,所以對郵件地址進行哈希值可能是一個好主意。我認爲地址的簡單散列(例如md5)會(幾乎)解決這個問題。

請參閱this thread關於如何防止目錄列表,以及如果Apache方式不起作用該怎麼辦。

+0

我現在肯定會實施某種哈希。謝謝。 – user482520 2011-12-22 22:59:34

0

散列電子郵件作爲文件夾名稱使用,並將其放在Web根目錄上。

你可以使用一個簡單的認證來訪問這個文件和一個php文件來讀取它們併發送 它們到瀏覽器。

+0

您可以請簡單的認證部分解釋嗎?謝謝 – user482520 2011-12-22 23:00:56