我正在尝试创建一个像这样的文件夹结构:
- 上传的文件
- 一种
- aaron.doe@hotmail.com
- b
- C
- ...一直到 z
- 一种
公共网络目录的上一层。唯一的唯一键(除了 user_id 本身)是用户电子邮件,因为他们的电子邮件是他们的用户名,所以......
问题:人们是否能够访问这些目录并获得所有用户的电子邮件地址?这是多么糟糕的想法?你有什么可能的替代方案?
谢谢。
我正在尝试创建一个像这样的文件夹结构:
公共网络目录的上一层。唯一的唯一键(除了 user_id 本身)是用户电子邮件,因为他们的电子邮件是他们的用户名,所以......
问题:人们是否能够访问这些目录并获得所有用户的电子邮件地址?这是多么糟糕的想法?你有什么可能的替代方案?
谢谢。
一定要确保使用散列而不是纯文本电子邮件地址。这是必须的。
除此之外,我想这是一种安全(和不安全)的解决方案,它基于通过默默无闻的安全性(即您的安全性完全依赖于没有人知道 URL 的事实 - 但如果他们知道,他们可以访问它们没有限制。)有许多潜在的漏洞 - 用户可以为 URL 添加书签;它可以嵌入页面的某个位置;它可以存储在服务器、浏览器和代理日志中...
看看PHPdir
函数:
http: //php.net/manual/en/class.dir.php
如果您希望您的用户可以通过 Web 公开访问这些文件夹,为什么要将这些文件夹放在 Web 根目录之上?
此外,您可以考虑对文件夹名称使用某种哈希值,1) 因为没有人希望他们的电子邮件地址被公开,2) 泄露内部 user_ids 可能会导致漏洞利用。
正如佩卡刚刚回答的那样;散列电子邮件地址可能是一个好主意,因为链接很可能会发布到论坛或类似网站,然后帖子可能会被电子邮件地址爬虫抓取。我认为只需一个简单的地址散列(例如 md5)就可以(几乎)解决这个问题。
请参阅此线程以了解如何防止目录列表,以及如果 Apache 方式不起作用该怎么办。
散列电子邮件以用作文件夹名称并将其放在 Web 根目录之上。
您可以使用简单的身份验证来授予对这些文件的访问权限,并使用 php 文件来读取它们并将它们发送到浏览器。