编写应用程序要注重其安全性
攻击下继续工作的系统是不存在的,但是系统可以抵御许多攻击或在受攻击后迅速恢复至可用状态。
•认证:系统将确保用户是可信的。
•审计:系统将记录重要事件,以允许稍后跟踪所发生的事情(例如,捕获攻击者或对攻击者提起诉讼)。
通常,在您确定了安全性目标时,您的程序单靠自己还不能完成某些事情。例如,可能您正在运行的操作系统需要进行加强,或者可能您要依靠一些外部认证系统。这样的话,您就需要确定这些环境需求并确保您告诉了用户如何使这些需求成为现实。然后您可以将精力集中在您程序的安全性需求上。
功能性需求和保证需求
一旦知道了程序的安全性目标,就可以通过更详细地填充其内容来确定安全性需求。CC 确定了两类主要的安全性需求:保证需求和功能性需求。事实上,CC 的大多数内容是一个可能的保证需求和功能性需求的列表,您可以针对给定的程序从中进行选取。
保证需求 是用来确保程序完成它该做的事情 - 而不做别的事 - 的过程。这可能包括评审程序文档以查看其前后的一致性、测试安全性机制以确保它们按计划工作,或者创建并运行渗透测试(为设法攻破程序而专门设计的测试)。CC 预先创建了几组保证需求,但是如果其它保证措施有助于您满足要求,那么也可以自由使用这些措施。例如,您可以使用工具在您的源代码中搜索可能的安全性问题(这些工具称为“源代码扫描工具”) - 即使它不是 CC 中的特定保证需求。
功能性需求 是程序为实现安全性目标所执行的功能。也许程序会检查密码以认证用户,或者对数据加密以将它隐藏等等。通常,只有“授权”用户可以完成某些操作 - 所以请考虑程序应该如何确定谁获得了授权。
下一步是什么?
那么,一旦知道了程序必须做的事情,这就够了吗?不。只要大致阅读已知的安全性漏洞列表(如 Bugtraq、CERT 或 CVE)就可以知道,当今的大多数安全性漏洞都是由相对小的一组常见实现错误引起的。这些错误没有单一的标准术语,但是还是有常见的短语来描述它们,如“不能验证输入(failing to validate input)”、“缓冲区溢出(buffer overflow)”以及“竞态状态(race condition)”等等。遗憾的是,大多数开发人员对于这些常见错误是什么没有任何概念,而且他们重复着别人以前已经犯过的错误。
本专栏未来的文章 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |