在编写代码时,您是否有意识地进行防御性编程,以确保高程序质量并避免代码被恶意利用的可能性,例如,通过缓冲区溢出利用或代码注入?
你总是应用于你的代码的“最低”质量水平是什么?
发布于 2008-08-09 18:00:27
在我的工作中,我们的代码必须是最高质量的。
因此,我们主要关注两件事:
把钱带回家。
发布于 2008-08-09 18:05:09
与abyx类似,在我所在的团队中,开发人员总是使用单元测试和代码审查。除此之外,我的目标也是确保我不包含人们可能使用的代码-我倾向于只为手头的对象所需的基本方法集编写代码,以使其按照规范的方式运行。我发现,合并可能永远不会使用的方法,但提供功能可能会无意中将“后门”或意外/意外使用引入系统。
与预测可能永远不会发生的事情相比,稍后返回并引入方法、属性和属性要容易得多。
发布于 2008-08-10 09:26:46
我建议对进入“组件”或框架的数据采取防御性措施。在“组件”或框架中,人们应该认为数据是“正确的”。
是这样想的。调用者需要提供正确的参数,否则所有函数和方法都必须检查每个传入的参数。但是,如果只对调用者执行检查,则只需要检查一次。因此,参数应该是“正确的”,因此可以传递到更低的级别。
如果存在错误,并且在调用中使用了错误的值。什么才是真正正确的做法呢?其中一个只表明程序正在处理的“数据”是错误的,一些人喜欢断言,但另一些人则希望使用高级错误报告和可能的错误恢复。在任何情况下,数据都会被发现是错误的,在少数情况下,继续处理它是很好的。(请注意,如果服务器至少不会死掉,那就好了)
从卫星发送的图像可能是尝试从互联网下载的高级错误恢复on...an图像的案例,以放置错误图标用于...
https://stackoverflow.com/questions/6847
复制相似问题