2011-12-22 97 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