Php 保护机密数据不被泄露

Php 保护机密数据不被泄露,php,security,apache,directory,Php,Security,Apache,Directory,我目前正在使用PHP/MySQL开发一个公共的开源软件。我在一个文件夹里有几个重要的秘密TXT文件。我在软件中使用它们,但问题是,任何知道文件夹和文件名的人都可以读取它们: secret_folder \ my_data.txt 我需要把它们藏起来,以防任何人在未经允许的情况下试图获取秘密数据。我发现了这种方法(将所有机密文件夹保存在唯一文件夹下): 每个网站的唯一密钥都会更改(请记住,该软件将是开源和公共的) 它对安全性足够好吗,还是我也应该使用HTACCESS?如果是,我如何使用它;或者

我目前正在使用PHP/MySQL开发一个公共的开源软件。我在一个文件夹里有几个重要的秘密TXT文件。我在软件中使用它们,但问题是,任何知道文件夹和文件名的人都可以读取它们:

 secret_folder \ my_data.txt
我需要把它们藏起来,以防任何人在未经允许的情况下试图获取秘密数据。我发现了这种方法(将所有机密文件夹保存在唯一文件夹下):

每个网站的唯一密钥都会更改(请记住,该软件将是开源和公共的)

它对安全性足够好吗,还是我也应该使用HTACCESS?如果是,我如何使用它;或者你有更好的想法吗?

记住,默默无闻的安全不是安全。所以不,这还不够好

.htaccess
中为
secret\u文件夹添加拒绝规则,然后完成

因此,您的
.htaccess
将包括:

<Directory /secret_folder>
    order allow,deny
    deny from all
<Directory>

这样一来,任何人都不可能通过Apache请求
my_data.txt
(如果他们入侵了PHP代码,他们可以,但不能直接通过web服务器)。

为了保护单个文件,请像这样使用.htaccess

<Files my_data.txt>
order deny,allow
deny from all
AuthType Basic
require valid-user
satisfy any
</Files> 

命令拒绝,允许
全盘否定
AuthType Basic
需要有效用户
满足任何

帮助保护文件的一种方法是不要将其作为文本文件。可能将所需的数据放在php文件的结构中。服务器将解释此代码,而不是将其作为txt文件提供


我不得不同意另一位评论:默默无闻不是安全。

也许是更好的选择ask@mario:那是不正确的。这些文件在目录索引中不可见,但如果您知道正确的URL,则可以公开访问它们。您可能会想到
^.ht
规则,该规则禁止访问默认配置中的文件,如
.htaccess
.htpasswd
,但仅适用于以
.ht
开头的文件。尽管按照您的建议创建这样的规则很简单,但它不在默认配置中,并且说它充其量只是误导。@Piskvor:您是对的。在我的服务器上也不工作。Debian或更早版本的Apache配置中曾经有一个默认的
设置。但这表明依赖默认值是个坏主意。你为什么要把秘密文件放在开源项目中?您是否试图对使用您的软件的人或其最终用户隐瞒此信息?@Dino beytar,如果您提供有关此数据用途的更多详细信息,您可能会得到一些关于如何最好地处理此数据的建议。我假设您正在源服务器上聚合此数据?最好添加一个拒绝,但将数据存储在“secret/my_data.php”中,前缀为-如果有人绕过拒绝,他们将看不到数据。@symcbean:fair point。但是,如果他们以“全部拒绝”的方式通过了拒绝,那么你还有其他事情要担心,因为他们很可能会让Apache自己这么做……但问题是,如果你粗心大意,使用Ultraedit或保留备份的程序修改my_data.php,那么备份将不会被解释为php,而是直接下载,允许任何人阅读。我认为我们可以同意,最好的选择是不将数据存储在web根目录中。但如果必须,请拒绝整个目录…如果我不将数据存储在web根目录中,如何从PHP访问它?怎么走?
/public_html/index.php
/secret_folder/my_data.txt
<Files my_data.txt>
order deny,allow
deny from all
AuthType Basic
require valid-user
satisfy any
</Files>