【问题标题】:How secure is storing sensitive information in a .PHP file on an Apache server?在 Apache 服务器上的 .PHP 文件中存储敏感信息的安全性如何?
【发布时间】:2010-09-28 11:09:09
【问题描述】:

我正在制作一个易于设置、无数据库的 PHP 网站,它将其数据存储在文本文件中。

设置是 Linux/Apache/PHP 服务器。

到目前为止,信息一直不敏感,所以我存储在:../data/system.txt 理论上有人可以在他们的浏览器中输入(url)/data/system.txt 并以纯文本形式查看数据文件,这 到现在为止都没有关系。

但现在我想存储密码,以便不同的组可以登录并查看不同的信息。这些网站将是“low interest”和“low profile”网站,如果有人无聊到入侵该网站并看到信息,这不是世界末日,我只是想提供一点技术障碍,这样网站就可以拥有个人和团体访问权限,同时保持轻松创建例如无需设置和维护 50 个数据库即可访问其中的 50 个站点。

我的问题是,在 Apache 上保护这些文本文件的最佳方法是什么?

我能想到以下几点:

1) 将“../data”目录更改为某个随机目录名称,例如“../data928374928374”作为一种混淆措施

2).txt 文件更改为 .php 并使用 PHP 代码保护文本,如下所示:

<?php
echo 'access denied';
die;
/*
...store data here...
*/
?>

3)把这个.htaccess文件放在/data目录下,可以保护.txt等结尾的文件:

<FilesMatch "\.(sqlite|xml|txt|csv|php)$">
Deny from all
</FilesMatch>

以下是我对这些的看法:

1) 我可以想象在这样的服务器上有查找隐藏目录名称的方法,这是真的吗?

2) 有一个名为 .php 的文本文件并在其中包含 PHP 代码是尴尬,因为我希望非技术人员能够编辑文本文件并将它们作为 -位于数据目录中并让它们工作,无需“用技术代码教育它们”。更不用说这会弄乱大多数编辑器中的语法着色。

3) 此 .htaccess 文件是否适用于所有服务器> 例如如果我只是将网站原样复制到任何 Apache 服务器,我是否保证文件将受到保护,或者是否有其他设置可以关闭 .htaccess 文件对 Apache 服务器的影响?

【问题讨论】:

    标签: php linux security apache


    【解决方案1】:
    1. 这需要蛮力 检查但是是的。
    2. 的确如此 使非技术人员的事情复杂化 人们。另外我想你可能会 不要做你想做的一切。
    3. .htaccess 规则仅适用于 目录所在的 Apache 服务器 允许使用 htaccess 规则(和 允许覆盖参数,如果 这是必需的)。另请注意,在 文件可能的一些配置 不叫 .htaccess 但 别的东西。

    您也可以使用 SQLite 或类似的东西,实际上不需要数据库服务器。

    另一个想法是有一个类似的结构

    /app
       /public_html
       /data
    

    并让 public_html 包含暴露给外界的您的网站,并且 /data 无法访问(仅通过您的脚本)。

    在 /app 文件夹中,您可以创建一个 htaccess 规则,该规则将始终将所有请求重定向到 punlic_html 文件夹,因此外部用户将看不到它(可以在幕后执行此操作)。如果两个文件夹都是副本,包括 .htaccess 文件,这对于一步部署应该足够了

    【讨论】:

    • 第 3 点很有趣,这就是我的假设。但也可以假设大多数(99%)提供 LAMP 堆栈的 Web 服务提供商将具有 .htaccess 设置,这样上述解决方案就可以工作,对吧?我假设支持 PHP 的 Windows 服务器不支持 .htaccess,所以这是唯一实际的例外,对吧?
    • 对于 Apache 服务器它可以工作。甚至是 Windows 上的 Apache。对于 IIS,它可能会稍微难一些
    • 感谢以下根访问提示,这肯定会起作用,但在这种情况下更重要的是“无残留”,例如20 名学生可以上传目录,建立他们的站点,然后在“删除站点的目录会删除其所有数据、配置文件和所有内容”的时间结束时将其删除,并且不会有用户忘记在根目录后面的密码文件删除,忘记它们在哪里,等等。
    • 还要检查 support.microsoft.com/kb/324064 用于 Windows 迁移。进行类似的后备应该相当简单。您可以拥有可以使用“student1”而不是“app”文件夹的站点,然后删除该文件夹会删除根本不需要的所有内容。如果需要,您还可以对数据进行完整备份。
    【解决方案2】:

    在 htdocs 树之外存储包含任何敏感内容的文件?

    【讨论】:

    • 是的,目标是一步式 xcopy 部署,我希望非技术人员能够将“他们的所有文件上传到一个目录中”,这就是他们的数据 -基于站点,而不必考虑“SQL/connection-string-anything”或将一些数据文件复制回 htdocs 根等后面。这样想:你想为每个 20 名学生创建一个“数据支持的站点”在您的 7 个类中,因此您要创建 140 个站点,它必须易于部署和维护,但相当安全,这就是目标。
    【解决方案3】:

    如果它是一个 PHP 只读文件,那么如果你有一个好的主机,那就很容易了。

    大多数时候,您的 Web 根不是服务器的根。

    例如,在我的主机上,Web 目录的路径是 /data/domain/www/,这是浏览器中 http://www.domain.com/ 的路径。

    但我可以创建一个低于该级别的文件夹,例如 /data/domain/secret_folder/ 浏览器无法访问但如果它位于同一服务器上则可以通过 PHP 读取,这要感谢fopen

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-14
      • 2017-05-20
      • 2017-06-01
      • 2012-06-19
      • 2015-10-12
      • 1970-01-01
      • 2021-09-02
      • 2012-12-26
      相关资源
      最近更新 更多