槐荫区某单位的信息科小赵,领导要求给内部系统做一轮安全加固。但加固完了之后老系统的一些功能模块打不开了——'安全是安全了但业务也停了',这显然不行。
安全和兼容性为什么经常冲突
原因很简单:很多老旧的安全措施是'一刀切'的。比如禁用了旧的TLS协议版本(1.0/1.1)——这确实安全了但那些还用老版本Java/.NET框架的系统组件就无法建立HTTPS连接了。再比如WAF防火墙启用了严格的SQL注入拦截规则——某些包含SQL关键字的合法业务数据也被误拦了。
小赵遇到的情况就是后者——他们的OA系统里有一个'备注'字段允许用户自由输入文字,有些用户喜欢在里面写包含select/insert/update之类关键词的内容(比如'请select合适的产品insert到订单里'这种),被WAF当SQL注入给拦了。齐鲁软件园做安全加固最容易踩的坑就是——安全策略太激进影响了正常业务。
怎么做安全加固不影响业务
核心原则是:灰度发布+监控告警+逐步收紧。第一步,先在测试环境把所有安全措施都开到最严格级别,跑一遍完整的业务流程测试。第二步,生产环境先开'观察模式'(只记录不拦截),跑一周看看有哪些正常请求会被误判。第三步,根据观察结果配置白名单例外规则。第四步,从'观察模式'切换到'宽松模式'(拦截明显的攻击但放过可疑的边界情况)。第五步,运行稳定后再逐步收紧到标准模式。
小赵按这个流程操作了一遍——观察模式下发现了七个误拦场景(除了那个备注字段的问题还有两个报表导出接口和一个文件上传功能),逐一加了白名单规则后才开启正式拦截。整个过程在汉峪金谷花了三周时间,虽然比一刀切慢但保证了业务零中断。
常见的兼容性问题和解法
列几个最常遇到的。问题一:TLS版本过低导致老旧客户端无法访问——解法:同时支持TLS 1.2和1.3,逐步淘汰1.0/1.1客户端。问题二:CSP(内容安全策略)阻止了内联脚本和第三方资源——解法:逐步收紧CSP规则,先用report-only模式收集违规报告。问题三:SameSite Cookie设置导致跨系统SSO失效——解法:对受信任的子域名设置None+Secure属性。问题四:WAF误拦含特殊字符的业务数据——解法:对特定URL路径放宽规则或配置参数白名单。
小赵再说一句总结了一套'安全加固checklist'——每一条安全措施旁边都标注了'可能的兼容性影响'和'回滚方案'。这份checklist后来在趵突泉的同行交流会上被好几个人要走复印。做安全加固不怕慢就怕粗暴——稳扎稳打才是正道。安全加固的本质是在安全和可用性之间找到平衡点,不是越严格越好。