作者回复: 谢谢分享。 第三点是很好的经验!反过来,也要有接受漏洞报告的简单、通畅的渠道。
作者回复: 属实,美国高度依赖个人的敏感信息和信用记录。中国现在很多事情也可以靠验证类似的敏感信息完成,这就是互联网商业的基础之一啊。
作者回复: 这些都是好办法! 怎么简单,怎么依赖少,怎么稳定就怎么来。
作者回复: 是的,验证是最大的阻力。其实这类似于给代码打补丁,JDK的办法主要是依靠自动化的回归测试。
作者回复: 还有一种方式,是升级版本发布之前,就把漏洞解决掉,特别是已经披露尚未修复的漏洞。不过,这种方式需要更专业的知识,更复杂的操作。一般地,我们没有这个能力掌握这么多的技能。
短期内,升级到最近的安全修复版就可以了。安全修复版一般会严格地考虑兼容性问题,升级的麻烦相对较小。
长期看,要升级到最新的版本。 因为老版本的生命周期迟早要结束。早升级早受益,早升级麻烦少。 如果累计好几个版本再升级,那时候的麻烦事更多,更难缠。
升级版本是最省事最简单的办法,其他的办法都比这个复杂。
对外不开放看起来是个好思路,不过怎么定义和管理内外,是个天大的麻烦事。比如说,公司外面的人员算不算外?公司的合作伙伴算不算外?财务部算不算外?另外一个研发团队算不算外?一个研发团队里,小李算不算外?不联网的本机是一个独立的个体,可是操作机器的人算不算外?防内奸的复杂度,远远超出我们的想象。
比如说,机器A不联网,只有公司CEO的账户可以操作机器A的特定功能。 机器A五年没有更新了。 由于机器A存在安全漏洞,几乎每个人都知道该怎么不使用CEO的账户,就可以获得CEO的权限。CEO也知道这个问题,但是就是不升级。有什么办法保持机器A可用还要防止别人使用吗(甚至还要防止CEO使用)?办法是有的。可是,很可能到最后,防内奸的管理制度可能搞得每个人都人心惶惶。一旦内奸没防住(当然防不住),人人都可能是受害者。
前置一个安全层,能起到的作用很小。很多代码的错误,攻击可以通过正常的业务逻辑和数据进行,前置的安全层在理论上,是不可能阻断这样的攻击的。
升级是最简单、最基本的运维,一定要做到,不要在这方面妥协。