如今的操作系统可以动态加载设备驱动和模块,通过脚本(scripting),控件(controls),组件(components),动态加载库(dynamically loadable libraries),和小应用程序(applets)来支持可扩展性
软件安全风险管理:
技术的选择:
考虑到开发效率,很多工程会选择C或C++,如果优先考虑语言的表达能力,则会选择LISP,ML,Scheme
一种语言如果能进行越多的静态错误检查,则用这种语言编写的程序则越可靠
Java程序的安全特性大大多被一个名为安全管理器(SECURITY MANAGER)的实体所管理。安全管理器的目标是实施安全策略。通常通过限制如文件系统等资源的访问来实现。这种方法可以被称为沙箱(sandboxing)。典型情况如java虚拟机jvm在web浏览器上运行一个不可信的applet,强制执行安全策略的结果是applet被赋予极为有限的能力,比如,不能创建任意的网络连接或查看大部分的本地文件系统。
Perl是另一种具有显著安全特性的语言。Perl可以以“污染模式”运行,即动态监控变量以检验不可信用户的输入是否会导致一个安全违规
一些客户/服务应用是基于分布式对象的软件系统如(CORBA公用对象请求代理体系结构)和(RMI JAVA远程方法调用)构建的。这些技术为远程资源的可用性、冗余性、并行性提供了一种解决方案,实现起来比原始套接字编程容易。许多公司正在使用一些成熟的应用服务,包括Enterprise JavaBeans(EJB)来实施多重高级服务,如持久性管理和自动数据库连接池。我们把所有这类技术统称为容器(container),即可以在不同的分布式组件中调用基于组件的图形化软件或使用交互式命令。
以下分别对主流技术做出概述
COBRA:
COBRA基于对象管理组织(OMG)的标准规范来实现安全服务
DCOM
DCOM是微软开发的分布式组件对象模型技术
EJB和RMI
EJB是Java的分布式对象平台。EJB客户端/服务器系统使用Java的RMI实现来通信
如果你依赖MAC地址、处理器ID或cookies,请记住他们本质上是由不可靠的客户端提供的
开放源代码和封闭源代码:
当代码被编译成JAVA字节码,对其进行逆向工程非常简单
对于一个合格的密码算法,密码中一个字符的改变会影响密文中至少一半的比特值