保护Propel runtime-conf.xml

时间:2013-10-03 09:18:14

标签: xml security propel

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

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

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

是否有简单有效的解决方案?

感谢您的建议

2 个答案:

答案 0 :(得分: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配置,然后将其包含在主索引中。

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.php中包含/../的语句:

include __DIR__ . '/../vendor/autoload.php';

答案 1 :(得分:0)

你是对的,当然:从访问该配置文件的人可以获得对数据库的访问权限,它并不是真正安全。

你唯一能做的就是设置一个额外的mysql用户“mypropeluser”并只分配你的应用程序所需的mysql权限。

毕竟,您对配置文件的看法对您的PHP项目也是如此。如果有人可以访问你的配置目录,他们可能也可以访问你的php目录并使用propel(即使配置文件被某种程度上“保护”)来做你想做的事情(注入“全部删除”代码,安装后门到你的数据库...)

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

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