webapp 的安全通用配置文件
Safe general config file for webapp
我想将 webapp 的所有配置选项保存在一个文件中。 (由 php、sass(编译期间)读取的路径、密码、选项,也许是 grunt,..)
我喜欢 JSON 格式,因为它非常清晰,几乎任何东西都可以解析 json。但是默认可以下载.json个文件。
我可以通过给文件一个 .json.php
扩展名来安全地防止这种情况发生吗?
有什么缺点?更好的方法?
要防止文件被下载,通常的做法是将其存储在网络服务器不提供服务的目录中。我不知道你在什么设置中,但假设一个 Apache 设置,例如,如果你的 .php
文件是从目录 /home/user/htdocs
提供的,你可以创建一个目录 /home/user/config
,确保它可以被网络服务器读取,并将 .json
文件存储在那里。
另一种方法,再次假设 Apache,将创建一个包含以下内容的 .htaccess
文件(受 this answer 启发):
RedirectMatch 404 \.json$
这不仅会阻止下载目录中的任何和所有 .json
文件,而且会隐藏它们的存在。
可能 只是 可以按照您建议的方式进行操作,即通过使用 .json.php
扩展名存储文件,尽管这不是推荐的方法。为此,该文件必须是有效的 PHP,但显然它也必须是有效的 JSON,而且 JSON 不允许注释这一事实让我们有些受阻。像下面这样的东西会在文件开始后不久停止 PHP 解释器,然后再泄露你的秘密:
{
"<?php exit('Access denied'); ?>": null,
"password": "secret"
}
我想将 webapp 的所有配置选项保存在一个文件中。 (由 php、sass(编译期间)读取的路径、密码、选项,也许是 grunt,..)
我喜欢 JSON 格式,因为它非常清晰,几乎任何东西都可以解析 json。但是默认可以下载.json个文件。
我可以通过给文件一个 .json.php
扩展名来安全地防止这种情况发生吗?
有什么缺点?更好的方法?
要防止文件被下载,通常的做法是将其存储在网络服务器不提供服务的目录中。我不知道你在什么设置中,但假设一个 Apache 设置,例如,如果你的 .php
文件是从目录 /home/user/htdocs
提供的,你可以创建一个目录 /home/user/config
,确保它可以被网络服务器读取,并将 .json
文件存储在那里。
另一种方法,再次假设 Apache,将创建一个包含以下内容的 .htaccess
文件(受 this answer 启发):
RedirectMatch 404 \.json$
这不仅会阻止下载目录中的任何和所有 .json
文件,而且会隐藏它们的存在。
可能 只是 可以按照您建议的方式进行操作,即通过使用 .json.php
扩展名存储文件,尽管这不是推荐的方法。为此,该文件必须是有效的 PHP,但显然它也必须是有效的 JSON,而且 JSON 不允许注释这一事实让我们有些受阻。像下面这样的东西会在文件开始后不久停止 PHP 解释器,然后再泄露你的秘密:
{
"<?php exit('Access denied'); ?>": null,
"password": "secret"
}