关于安全测试的10个重要技巧2简介本文提供关于使用安全的方式测试MicrosoftWindows家族操作系统应用程序的信息。这些主题分为10个技巧,任何开发人员或测试人员都可以在测试应用程序或硬件设备驱动程序时应用它们。要访问本文中提及的工具和资源,请参见本文末尾的“资源”。返回页首21.不要以管理员身份运行测试。开发人员和测试人员经常以本地管理员身份进行操作,因为这是最不会引起系统拒绝执行的方法。这种行为会给人一种虚假的稳定感觉,因为管理员实际上可以在系统上进行任何操作,所以大部分情况都很正常。一旦当前用户不是管理员,操作系统安全功能就开始生效了,这时事情就可能就不会那么顺利。幸运的是,有一个容易的解决方法:除非完全必要,不要以管理员身份运行任何测试。使用RUNAS命令Microsoft为最近的Windows版本添加了一项出色的功能,允许当前登录的用户以不同的帐户运行另一个程序。从Windows资源管理器界面或从命令行使用RUNAS命令能够快速简单地指定非管理员帐户。使用辅助本地计算机或域帐户在本地计算机上创建一个只具有本地用户权限的用户。这样,运行测试的人员可以很快看到是否有功能由于为文件系统或网络访问假设了某种权限级别而无法工作。安装程序之后,在运行测试之前注销并以本地用户身份重新登录。如果需要网络权限,那么请在测试系统上使用只具有用户特权的第二个域帐户。这样,网络权限就不会影响到测试,而管理员权限也不会引起虚假的安全感觉。一些例外……下面是一些例外,这些例外需要管理员访问权限可以接受:•设置和安装需要能够以一种稳固的方式更改系统状态。•维护和配置工具可能必需管理员权限。在这些情况下,最好的编程实践是应用程序检查其启动时可用的权限,然后如果需要管理员权限才能使用所有功能,则对用户发出警告。返回页首22.在安全的文件系统(NTFS)上进行测试如果文件系统不安全,以管理员身份运行测试毫无益处。FAT12、FAT16和FAT32只具有基本的文件权限,但是NTFS为测试所有类型的权限场景提供了完整而牢固的基础。使用NTFS从一开始就使用NTFS系统驱动器安装所有测试机器。这样将会为操作系统配置基本的默认权限。在WindowsXP和更高版本中,运行CONVERT命令会自动将安装默认权限应用于系统卷。并且会考虑为用户打开磁盘配额。首先在NTFS上测试,根据需要在其它文件系统上测试因为NTFS是一个安全的文件系统,所以,如果测试的软件能在NTFS上正常运行,那么它也可能在使用其它不安全的文件系统时正常运行。在受限环境中运行良好的软件在不受限环境中通常也会运行良好。注意文件系统之间的区别除了文件系统权限之外,文件系统之间还有一些其它区别需要注意,例如最大文件、群集和分区大小。这些是测试边界情况的主要区域。从受限环境开始,根据需要增加权限如果当前用户无法访问特定的文件夹,软件还能够正常运行吗?特定文件操作需要的最小权限是什么?程序能否将文件保存到一个“下拉框”文件夹?首先在文件夹或文件共享上使用受限的权限,然后在测试过程中逐步添加特权。返回页首23.不要改变HKLM或%PROGRAMFILES%中的任何内容非常多多的程序都假设可以不受限制地访问注册表的HKEY_LOCAL_MACHINE节和系统驱动器上的%PROGRAMFILES%文件夹。对于普通用户,这两项都是只读的。不要更改它们的任何内容,除了在安装的时候。“徽标一致性”要求针对应用程序徽标的"DesignedforWindowsXP"进行设计的应用程序不应该尝试写入HKLM或%PROGRAMFILES%。请参见"DesignedforWindowsXP"应用程序规范的第3.0节。以用户为基础存储数据假设用户可以访问%USERPROFILE%文件夹,这是安全合理的。为临时数据文件使用%TEMP%文件夹。使用%APPDATA%来以每个用户为基础存储应用程序特定数据。考虑将数据存储在用户的“我的文档”文件夹下。对于注册表设置,请使用HKEY_CURRENT_USER。返回页首24.不要以明文形式存储或发送秘密信息非常多的应用程序都使用简单的混淆来隐藏显而易见的信息。这可能防止了偶尔的窥探,但是它不能够提供任何有意义的保护。使用System.Security.CryptographyMicrosoft.NET框架包含一个完整的类库,提供了用于哈希、加密、...