1

我正在尝试创建一个像这样的文件夹结构:

  • 上传的文件
    • 一种
      • aaron.doe@hotmail.com
    • b
    • C
    • ...一直到 z

公共网络目录的上一层。唯一的唯一键(除了 user_id 本身)是用户电子邮件,因为他们的电子邮件是他们的用户名,所以......

问题:人们是否能够访问这些目录并获得所有用户的电子邮件地址?这是多么糟糕的想法?你有什么可能的替代方案?

谢谢。

4

4 回答 4

1

一定要确保使用散列而不是纯文本电子邮件地址。这是必须的。

除此之外,我想这是一种安全(和不安全)的解决方案,它基于通过默默无闻的安全性(即您的安全性完全依赖于没有人知道 URL 的事实 - 但如果他们知道,他们可以访问它们没有限制。)有许多潜在的漏洞 - 用户可以为 URL 添加书签;它可以嵌入页面的某个位置;它可以存储在服务器、浏览器和代理日志中...

于 2011-12-22T22:50:00.027 回答
0

看看PHPdir函数: http: //php.net/manual/en/class.dir.php

如果您希望您的用户可以通过 Web 公开访问这些文件夹,为什么要将这些文件夹放在 Web 根目录之上?

此外,您可以考虑对文件夹名称使用某种哈希值,1) 因为没有人希望他们的电子邮件地址被公开,2) 泄露内部 user_ids 可能会导致漏洞利用。

于 2011-12-22T22:50:00.477 回答
0

正如佩卡刚刚回答的那样;散列电子邮件地址可能是一个好主意,因为链接很可能会发布到论坛或类似网站,然后帖子可能会被电子邮件地址爬虫抓取。我认为只需一个简单的地址散列(例如 md5)就可以(几乎)解决这个问题。

请参阅此线程以了解如何防止目录列表,以及如果 Apache 方式不起作用该怎么办。

于 2011-12-22T22:56:57.527 回答
0

散列电子邮件以用作文件夹名称并将其放在 Web 根目录之上。

您可以使用简单的身份验证来授予对这些文件的访问权限,并使用 php 文件来读取它们并将它们发送到浏览器。

于 2011-12-22T22:58:17.030 回答