环境变量是 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 数据库等后端服务?
编辑:除了攻击者控制后端服务的风险之外,我还可以想象攻击者导致应用程序连接到恶意后端的风险。