0

将带有数据库连接密码和用户名的 Propel xml 文件放在网络服务器上时,应该如何保护它?

-<connection><dsn>mysql:host=localhost;dbname=test</dsn><user>root</user><password/></connection>

如果我把它放在主目录中,任何知道路径的人都可以访问这个 xml 文件,或者?

有没有简单有效的解决方案?

谢谢你的建议

4

2 回答 2

3

您可以采用两种方法来避免这些安全问题。

1) 不要将 .xml 文件存储在网络服务器上。

Propel 有一个命令config:convert-xml可以将你的 xml 文件转换成 php 文件——它不能从 http 客户端读取。

config
    config:convert-xml   Transform the XML configuration to PHP code leveraging the ServiceContainer

因此,只需将 xml 文件存储在您的 VCS 存储库中,但在您的网络服务器上将其删除并生成一个 php 配置,然后将其包含在您的主 index.php 中。

或者

2) 更改您网站的入口点。

如果你有这样的结构:

.
├── composer.json
├── generated-classes/
├── generated-conf/
│   └── config.php
├── src/
│   ├── buildtime-conf.xml
│   ├── runtime-conf.xml
│   └── schema.xml
├── vendor/
│   ├── autoload.php
│   ├── ...
└── web/
    └── index.php

例如,将您的 Apache 指向,./web/而不是这样,./则无法访问文件./web/夹中的所有其他文件。当然,在你的index.phpare then include 语句中/../

include __DIR__ . '/../vendor/autoload.php';
于 2013-10-07T06:03:18.960 回答
0

当然,您是对的:从可以访问该配置文件的人员可以访问您的数据库的意义上说,这并不是真正安全的。

您唯一可以有效地做的事情是设置一个额外的 mysql 用户“mypropeluser”并仅分配您的应用程序所需的 mysql 权限。

毕竟,您对配置文件所说的话也适用于您的 PHP 项目。如果有人可以访问您的配置目录,他们可能还可以访问您的 php 目录并使用推进(即使配置文件以某种方式受到“保护”)做任何他们想做的事情(注入“全部删除”代码,安装后门到您的数据库...)

底线:1)您的推进配置将仅与您的(网络)服务器一样安全。2)就数据库而言(理想情况下是在另一台机器上),您可以通过减少权限来最小化最坏的情况(即不允许删除表命令)

不是很令人振奋,我知道。但我希望它有所帮助:-)

于 2013-10-03T11:58:32.373 回答