【问题标题】:Uploading files and keeping them safe上传文件并确保其安全
【发布时间】:2011-09-26 05:12:04
【问题描述】:

我正在使用 php 和 MYSQL。我创建了一个会员区,人们可以在其中上传重要图片(主要用于财务记录)。我希望就存储这些文件的最佳方式获得一些建议。什么样的文件夹结构最好?前 domain.com/Files/UserName/RandomGeneratedName/Files。

还有关于 chmod、.htaccess、.htpassword 和任何类型的 php 密码保护的建议。

提前致谢。

【问题讨论】:

  • 我会使用 .htaccess 和 .htpassword 组合
  • 您可以将这些文件存储在 WWW 根目录之外,并通过带有内容标题的 PHP 脚本提供内容。
  • 我正在考虑将这些文件存储在哈希目录中,有什么想法吗?我也会研究这些建议。
  • 我也认为@scuzzy 说这是高度安全的,除非你的服务器被黑了
  • 是的,我真的很喜欢 Scuzzy 的解决方案,谢谢大家。

标签: php security file passwords directory


【解决方案1】:

我建议将它们存储在树外。这样,默认情况下您需要启用对它们的访问,而不是禁用访问(以防万一您的 .htaccess/config/code 中有错误,对文件的访问被禁用,而不是启用)

其次,摆脱随机目录,它不会增加太多安全性,但会不必要地使实现复杂化

您可以使用 php 检查成员凭据,放置适当的标题(例如,etag 等的 mime 类型),并通过 passthru 或类似的方式提供文件。

【讨论】:

    【解决方案2】:

    最好的方法:

    • 使用 .htaccess 保护目录
    • 将 index.html 添加到目录“以防万一”
    • 使用随机文件名将它们存储在您的目录中
    • 使用 php/mysql 检查用户是否有权访问您的文件

    示例: 您在 domain.com/protecteddir/sdjasdu83299sdnYUsb.dat 中有一个文件

    您可以使用 php/mysql 将用户发送到虚拟目录以下载文件。您可以通过 php.ini 抛出正确的文件头 + 文件名。因此,即使文件名为 sdjasdu83299sdnYUsb.dat,用户也会将其下载为“myfinancial.doc”

    用户永远不会知道真实文件的位置和名称。

    您的 .htaccess 文件应包含:

    <Files *>
    Order Allow,Deny 
    Deny from All 
    </Files>
    

    【讨论】:

      【解决方案3】:

      您可以 .htaccess 进行 URL 重写,并在保存文件的文件夹中获取 index.php 文件(编写此代码:),因此当有人想进入此文件夹时: 第一:他不知道真实地址 第二:由于有一个index.php提供给他无法进入的主页。

      【讨论】:

        猜你喜欢
        • 2010-09-07
        • 2020-07-14
        • 2010-12-11
        • 2012-04-12
        • 2011-02-05
        • 2013-10-18
        • 2011-10-16
        • 1970-01-01
        • 2012-04-14
        相关资源
        最近更新 更多