2

环境变量是 Cloud Foundry 运行时与应用程序就其环境进行通信的方式。它传达的最重要的信息之一是可用的服务以及如何与它们连接。

资源

同一页面提供了一个环境变量示例,其中包含 MySQL 数据库的用户名密码等连接参数。

VCAP_SERVICES: {
"mongodb-1.8":[{"name":"hello-mongo","label":"mongodb-1.8","plan":"free","credentials":{"hostname":"172.30.48.64","port":25003,"username":"e4f2c402-1153-4dfb-8d98-2f6efc65e441","password":"f17f81e4-9855-4b9c-a22b-e6a9e6f113c3","name":"mongodb-5751dac0-3b5e-405b-a1e1-2b384fe4026d","db":"db"}}],
"redis-2.2":[{"name":"hello-redis","label":"redis-2.2","plan":"free","credentials":{"node_id":"redis_node_4","hostname":"172.30.48.43","port":5002,"password":"e1d7acb0-2baf-42be-84bc-3365aa819586","name":"redis-96836b7c-0949-45fd-a741-c7be5951d52f"}}],
"mysql-5.1":[{"name":"hello-mysql","label":"mysql-5.1","plan":"free","credentials":{"node_id":"mysql_node_5","hostname":"172.30.48.24","port":3306,"password":"pw4EKJqL6na6f","name":"dd9b58515e3cb41958a30bf2af88126fc","user":"uLfJbOmxfSEUt"}}]

}

该页面进一步指出:

您可以使用 Java 的环境变量 API 和/或现有的 Spring XML 功能将这些信息读入您的应用程序,但使用新的云命名空间(在此处描述)更容易使用这些信息,它将其解析为一个方便的 Properties 对象。

读到这里,我想知道这个设置对应用程序安全有什么影响。具体来说,开发人员应该采取哪些措施来防止恶意攻击者直接控制 mysql 数据库等后端服务?

编辑:除了攻击者控制后端服务的风险之外,我还可以想象攻击者导致应用程序连接到恶意后端的风险。

4

1 回答 1

3

如果要连接到后端(数据库)服务,则必须以某种方式向应用程序提供凭据。为了能够动态绑定到服务,环境变量是将应用程序私有信息传递给应用程序的不错选择。

与任何应用程序妥协一样,当应用程序被黑客入侵时,后端就会暴露出来。

连接到恶意后端的唯一方法是攻击者可以在 Cloud Foundry 基础架构上设置恶意服务,并且能够破坏云控制器以传递应用程序伪造的环境变量。

于 2011-11-21T22:21:25.423 回答