首页 > 解决方案 > 为 Cloud Foundry 上的 SpringBoot-Server 启用/禁用 HTTP 压缩

问题描述

我在 Cloud Foundry 上有一个 Spring Boot 应用程序,并且想要停用以下 HTTP-Header 中使用的 HTTP 压缩: Accept-Encoding: gzip, deflate 。我想防止 BREACH 攻击。

manifest.yml 中是否有一个条目,我可以使用它禁用此压缩?

标签: spring-bootcloud-foundryhttp-compressionbreach-attack

解决方案


您的应用程序没有manifest.yml(至少对于 cf cli's 没有manifest.yml)属性。请记住,这manifest.yml就是控制(或自动化)cf cli 以及它将如何将您的应用程序推送到 Cloud Foundry 的内容。尽管在您可以部署的任何类型的应用程序中,它都是通用的。最好的方法是让 cli 将信息传递给您的应用程序。您的应用程序必须寻找该信息才能改变任何行为。

幸运的是,Spring Boot 可以从各个地方使用外部配置属性设置。其中两个,环境变量和系统属性,都可以通过manifest.yml. 此外,Spring Boot 提供了一些属性来控制它使用的压缩

如果要禁用压缩,只需设置server.compression.enabledfalse.

https://docs.spring.io/spring-boot/docs/2.2.7.RELEASE/reference/html/appendix-application-properties.html#server-properties

综上所述,您可以通过 manifest.yml 通过添加一个env:块并定义适当的环境变量来配置此属性。

前任:

...
  env:
    SPRING_COMPRESSION_ENABLED: false
...

或者,您可以设置系统属性:

前任:

...
  env:
    JAVA_OPTS: '-Dspring.compression.enabled=false'
...

这只会关闭压缩,如果您查看文档参考,Spring Boot 还有其他属性可用于更精细地调整压缩。您可以按照我上面描述的相同方式应用这些或任何其他 Spring Boot 配置属性。


推荐阅读