到这一篇文章,意味着专栏第三模块“安全的代码”也更新完毕了。今天,我来集中解答一下留言区里的一些疑问。
@醉侠
希望老师后面能多讲讲安全编码的例子或者推荐好的书籍,这块儿确实是很大的弱点。
答:不同于其他的编码技术,编码安全是一个在攻与防的拉锯战中持续发展的领域。新的攻击技术花样翻新,防守技术也跟着变化。因此,编码安全的技术和技巧也纷繁复杂。CWE 的常见安全问题列表,到目前为止,已经列举了 1131 种问题。其中每一个问题,都会给软件带来难以预料的安全风险。由于安全问题和相应的技巧数量如此巨大,学习几种或者十几种编码安全的技巧,能起到的作用并不是很大。
但坐以待毙显然不是我们的风格。安全问题的数量和技巧虽然庞大,但是基本的原理数量并不是很多,而且都很直观。比如,只要你记住,“跨界的数据不可信任”这条简单的原理,并且去校验每一个跨界数据的有效性,就消除了代码的很大一部分风险。至于什么是有效的数据,什么是有害的数据,每一个场景都有不同的定义。当你想要践行这条原理的时候,你总能定义数据的有效性,找到检查的办法。记住了这一条原理,面对跨界数据的时候,你就会加倍警觉,跟踪数据检查点,想办法校验数据。
所以,我能给的第一个建议就是:记住最基本的安全编码原理。