【问题标题】:How safe are yaml, xml or annotations to store relevant information? [closed]yaml、xml 或注解存储相关信息的安全性如何? [关闭]
【发布时间】:2015-09-09 06:31:45
【问题描述】:

我通常用 PHP 编写代码,我在许多应用程序中看到了一些配置文件,其中包含一堆带有相关信息的常量,例如密码、电子邮件地址、服务器或其他机器的 ip……隐藏在树文件夹中(或者没有那么多隐藏)。

Wordpress 的 wp-config.php 文件就是一个很好的例子。

我想知道将这些信息保存在其他文件格式甚至数据库中是否更安全。

像某些框架(如 Symfony)那样使用 yaml、xml 或注解有什么优势吗?

【问题讨论】:

  • “安全”取决于此类配置文件的位置(例如在 docroot 之外)。使用 YAML/等。之所以流行,是因为它避免了在 config.php 和数据库表之间分割设置。
  • 在我看来这不是一个基于意见的问题,我只是想问一下 yaml、xml 和存储相关配置数据的注释有什么区别

标签: php xml annotations yaml config


【解决方案1】:

关于安全性:mario 和 PiranhaGeorge 所说的(取决于位置,浏览器不应访问该位置)

关于配置文件的使用:请记住,您首先需要一些信息,然后才能访问更复杂的存储设施。例如,您需要拥有数据库访问参数或解密加密文件的信息。 有一些设置必须在应用程序启动时了解,并且在运行时不能(轻松)更改。除了 db 访问参数之外的另一个示例可能是插件目录的包含路径。 这些信息必须可以在不先启动应用程序的情况下进行更改。

理想情况下,您需要一种机器(例如 PHP 解释器)和管理员都易于理解的格式。机器需要花费尽可能少的时间来加载配置,管理员需要一种简单的方法来更改应用程序参数(想想智能手机上的 SSH 和 vi 或其他 bash 编辑器,如果有紧急情况),例如,如果需要在生产数据库和测试数据库之间切换。

【讨论】:

  • 这很有趣,当然我需要保留一些数据,例如数据库访问等,但是在这种情况下,yaml、xml、注释、php 或纯文本之间有什么区别吗?
  • 这真的进入了个人喜好的领域。我认为,如果您使用一种格式,该格式已经在语言中内置了解析器,或者可以作为标准扩展使用,那总是会更好。所以 yaml、php 结构等都可以,xml 可以,但通常会过度杀伤(并且有相当多的开销)......只要选项不太复杂,纯文本就可以。不确定注释,我还没有查看 Symfony 中的实现——我猜他们选择了这种格式,以便 IDE 可以使用它
【解决方案2】:

本质上,这些方法的安全性不亚于其他方法。我想说,您使用哪种存储机制主要取决于个人喜好。

需要记住的一些事情(在我的脑海中):

  1. 保持一致 - 选择一种存储机制进行配置并将其用于所有配置。
  2. 确保文件存储在 Web 根目录之外,或适当配置服务器,例如通过 .htaccess 文件,因此无法在浏览器中读取。
  3. 确保使用适当的权限,尤其是在共享主机环境中。您不希望其他用户能够读取您的配置文件。
  4. 如果您不将配置存储在 PHP 中,您可能最终还是会序列化和缓存它们。
  5. (2) 和 (3) 也适用于任何缓存配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 2017-04-10
    • 2014-01-11
    • 2014-06-25
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多