修改响应头

2020-04-10  本文已影响0人  16325

需求

接到上级命令,需要对网站做安全加固。

第一次

需要改造的共有两个项目,业务模块和单点认证服务器模块(采用cas实现)
首先想到的是在http服务器层面进行配置,简单可控,在httpd上启用mod_header模块,增加以下配置:

<IfModule headers_module>
   Header edit Set-Cookie ^(.*)$ $1;Secure   
   Header set Strict-Transport-Security "max-age=15768000"  
   Header add Cache-Control "no-store"
</IfModule>

第二次

运维同志告知,cookie的属性只能在应用内自己添加

看了一下项目,业务服务改下web.xml
认证服务是cas,基于springboot的。改下配置就可以了。
改完发现,业务端使用了dwr,而web.xml中的配置并不能影响到其他的cookies的设置,相当于没有改全,所以需要增加filter处理,干脆全加filter,不改动任何配置。

第三次

先说业务端代码。增加个filter,加三个开关对应三个需求点,这样如果投产有问题,只要关闭开关就和什么都没有发生一样。

CAS端代码类似,但是CAS本身已经提供了cache-control和hsts的配置,只需要在配置文件中打开即可。所以这两个配置其实是重复的。

第四次

本以为万事大吉。但是请运维同事查看生产cas的响应头的,发现cas并没有设置hsts,代码里有为啥没设置呢? 唯一的判断是request不是https的。
后来确实是这种情况,生产环境ssl证书在F5上就卸载了,后续apache和jboss并没有证书了,请求都是http的,所以没有加上。

第五次

发现cas的session对应的cookie写成了两份。一个cas自己写的path是/cas/
一个是filter中增加,path是/cas(contentpath)。 那么cas的path是怎么配置的path呢?

第六次

测试发现,每个请求都重新设置cookie太重复了。所以在session中增加一个标志位,每个cookie一个标志,如果已经设置过了,那么不设置。

还有一点,优化了日志,之前每个经过filter处理的读取配置参数,都要打印sql日志。如果系统超时,会不断有请求发来,那么后台日志会一直滚动。这里去掉多余的日志,并且配置的获取走缓存。

总结

其实中间还有一次,就是试图替换web.xml,改maven插件等这种,后来发现要改动各种流水线,并且光改web.xml也不能解决问题,就放弃了。

上一篇 下一篇

猜你喜欢

热点阅读