一般意义上的安全确实包含很多内容,大到信息安全体系,小到缓冲区溢出造成的漏洞,还包含有相应管理制度等。
作为软件开发厂商,如何在自己的职权范围内保证关键应用的安全?以下观点也许能给你有所启示。
1)应用安全需求评估
这本来应该是最终用户完成的工作,可根据现状,这几乎是不在可能的,不如让我们把它做成选择题,由用户去画勾。
2)典型安全应用模型与安全策略的研究
在一些广泛使用的大系统,如操作系统、应用服务器、数据库服务器中,它们都有很先进和成熟的安全模型和安全策略控制,例如访问控制列表(ACL)、数据库操作权限分配、AD 中的代理管理等,都是值得深入研究和借鉴的。
3)安全代码实践研究
缓冲区溢出产生漏洞和构建 SQL 语句攻击是当前许多系统中出现的问题,其实只要在编码的时候稍加注意,这些失误很容易就可以避免,所以有必要建立一套代码审查办法,同时使用黑箱的方式对代码进行进行粒度很细的模拟攻击,以尽早发现安全问题。
4) 整理和建立各个平台安全工具集
DES、RSA、MD5、SHA这些优秀的、应用广泛的加密或散列函数对于安全编码有很大帮助,有必要把它们收集、整理在一起,为开发人员提供一个开发工具包。
.NET 和 Java 在这方面已经做的很好了,但在 Cobol、C/C++ 这些语言平台上,还需要做点工作。
在 IPSec 不能使用或不能到达未端的情况下,如果能做一套基于 PKI 的数据通信工具包,那一定是十分完美了。
5)安全测试与审计实施研究
在软件开发厂商里,有必要建立独产的安全测试部门,对公司的产品进行各种安全测试(黑箱和白箱),同时,在指定时间隔内,在用户允许的情况下,对产品的实际运行状况安全审计,以加强系统的安全级别。
6)建立应用安全评价体系
怎么样才能说我的系统安全性高?怎么样说出去让人相信? 没有评价体系和评价标准是不行的,Windows 的 C2 级安全性就是来自于 TCSEC,现在的 TCSEC 变成 CC (通用安全评价体系)了,这个东西太大,在参考它的基础上,有必要结合自己的实际情况,建立适合自身特点的安全评价体系,这样可以更有针对性,如对于金融行业应用来说。
这些好像都是很难量化的指标,实际执行的时候,很难执行下去。
moslem总结得真好。
软件产商努努力,还是很容易达到这水平的。