关于安全测试的10个重要技巧,你知道几个?
关于安全测试的 10 个重要技巧
简介
本文提供关于使用安全的方式测试 家族操作系统应用程序的信息。这些主题分为 10 个技巧,任何开发人员或测试人员都可以在测试应用程序或硬件设备驱动程序时应用它们。
要访问本文中提及的工具和资源,请参见本文末尾的“资源”。
返回页首
1. 不要以管理员身份运行测试。
开发人员和测试人员经常以本地管理员身份进行操作,因为这是最不会引起系统拒绝执行的方法。这种行为会给人一种虚假的稳定感觉,因为管理员实际上可以在系统上进行任何操作,所以大部分情况都很正常。一旦当前用户不是管理员,操作系统安全功能就开始生效了,这时事情就可能就不会那么顺利。幸运的是,有一个容易的解决方法:除非完全必要,不要以管理员身份运行任何测试。
使用 RUNAS 命令
为最近的 版本添加了一项出色的功能,允许当前登录的用户以不同的帐户运行另一个程序。从 资源管理器界面或从命令行使用 RUNAS 命令能够快速简单地指定非管理员帐户。
使用辅助本地计算机或域帐户
在本地计算机上创建一个只具有本地用户权限的用户。这样,运行测试的人员可以很快看到是否有功能由于为文件系统或网络访问假设了某种权限级别而无法工作。安装程序之后,在运行测试之前注销并以本地用户身份重新登录。
如果需要网络权限,那么请在测试系统上使用只具有用户特权的第二个域帐户。这样,网络权限就不会影响到测试,而管理员权限也不会引起虚假的安全感觉。
一些例外……
下面是一些例外,这些例外需要管理员访问权限可以接受:
设置和安装需要能够以一种稳固的方式更改系统状态。
维护和配置工具可能必需管理员权限。
在这些情况下,最好的编程实践是应用程序检查其启动时可用的权限,然后如果需要管理员权限才能使用所有功能,则对用户发出警告。
返回页首
2. 在安全的文件系统 (NTFS) 上进行测试
如果文件系统不安全,以管理员身份运行测试毫无益处。FAT12、FAT16 和 FAT32 只具有基本的文件权限,但是 NTFS 为测试所有类型的权限场景提供了完整而牢固的基础。
使用 NTFS
从一开始就使用 NTFS 系统驱动器安装所有测试机器。这样将会为操作系统配置基本的默认权限。在 XP 和更高版本中,运行 命令会自动将安装默认权限应用于系统卷。
并且会考虑为用户打开磁盘配额。
首先在 NTFS 上测试,根据需要在其它文件系统上测试
因为 NTFS 是一个安全的文件系统,所以,如果测试的软件能在 NTFS 上正常运行,那么它也可能在使用其它不安全的文件系统时正常运行。在受限环境中运行良好的软件在不受限环境中通常也会运行良好。
注意文件系统之间的区别
除了文件系统权限之外,文件系统之间还有一些其它区别需要注意,例如最大文件、群集和分区大小。这些是测试边界情况的主要区域。
从受限环境开始,根据需要增加权限
如果当前用户无法访问特定的文件夹,软件还能够正常运行吗?特定文件操作需要的最小权限是什么?程序能否将文件保存到一个“下拉框”文件夹?

首先在文件夹或文件共享上使用受限的权限,然后在测试过程中逐步添加特权。
返回页首
3. 不要改变 HKLM 或 %% 中的任何内容
非常多多的程序都假设可以不受限制地访问注册表的 节和系统驱动器上的 %% 文件夹。对于普通用户,这两项都是只读的。不要更改它们的任何内容,除了在安装的时候。
“徽标一致性”要求
针对应用程序徽标的 " for XP" 进行设计的应用程序不应该尝试写入 HKLM 或 %%。请参见 " for XP" 应用程序规范的第 3.0 节。
以用户为基础存储数据
假设用户可以访问 %% 文件夹,这是安全合理的。为临时数据文件使用 %TEMP% 文件夹。使用 %% 来以每个用户为基础存储应用程序特定数据。考虑将数据存储在用户的“我的文档”文件夹下。对于注册表设置,请使用 。
返回页首
4. 不要以明文形式存储或发送秘密信息
非常多的应用程序都使用简单的混淆来隐藏显而易见的信息。这可能防止了偶尔的窥探,但是它不能够提供任何有意义的保护。
使用 ..
.NET 框架包含一个完整的类库,提供了用于哈希、加密、解密、签名等密码学函数。
不要存储秘密,而是存储哈希值
如果必须存储一些敏感内容而不需要解密,请不要存储秘密内容,而应该存储私密内容的单向哈希值。然后将计算出来的哈希值与秘密内容的哈希值相比较。
“加点盐”
计算或存储哈希值时,添加一个唯一的随机值(也就是一点“盐”),从而使相同数据的哈希值对于每个用户或机器都是唯一的。
了解信任边界
程序可以在哪些地方不再信任小心传输的数据?一个定义良好的信任边界非常必要。
法律因素
测试时应该考虑一些法律要求,例如 1996 年通过的健康保险流通与责任法案 (HIPAA)、计算机欺诈和滥用法案 (CFAA) 以及加利福尼亚 (CA) 。
返回页首
5. 获取足够的功能文档
有时在开发周期的最后时刻才保存文档,但是文档是必需的,而且需要谨慎处理。请注意,这项提示的主题不是关于完美,而是项目组应该拥有关于每个特性的足够的文档。没有这类信息会加大将来诊断潜在的安全问题的难度。
了解 5 个 W
每项功能都需要记录 5 个方面,简称为:谁 (who)、什么 (what)、地点 (where)、时间 (when) 和原因 (why)。
列出文件
该功能使用哪些源文件?该功能产生了哪些临时文件?该功能允许用户打开或保存哪些数据文件类型?一定不要假设数据文件会在执行会话中保持不变。任何数据文件都可能在没有使用应用程序打开的情况下被恶意用户更改或操作。测试文件打开代码以进行健壮的错误处理。一定不要在代码中或测试期间假设一个特定的文件名以及类似内容(除非您完全确信文件名不会被恶意用户更改)。
























