针对内容扫描的最佳做法

确定内容扫描作业将扫描的应用程序中正在使用的技术,并且参考下列针对各类型的最佳做法。

使用测试用户帐户

使用可以跟踪的测试帐户,以确保不会真正订购服务,因此在它崩溃的情况下可以将其复位。通过测试帐户,管理员还可以在测试之后更轻松地清理站点。对于测试帐户,请考虑下列事项:

  • 它应仅对数据库中的测试记录具有访问权限,以便可以恢复修改的记录。
  • 删除测试帐户所创建的新纪录。
  • 忽略测试帐户中的订购单或其他交易。
  • 如果站点包含论坛,则测试帐户应仅访问测试论坛,以便真实客户在测试阶段期间不能够看到测试。例如,看到跨站点脚本编制弹出窗口可能会令人惊恐不已。
  • 如果站点对不同帐户使用不同的特权,则使用多个测试帐户。使用多个测试帐户将确保更全面的应用程序测试。

起始 URL

确定是否要扫描起始 URL 中所包含目录的上级目录。例如,提供给您起始 URL www.example.com/customers/default.aspx 并且您已选中在起始域中仅扫描各起始 URL 的目录中和目录下的链接复选框。在此状态下,作业不能扫描 www.example.com/partners,因为它不在客户目录内。要扫描合作伙伴目录的内部,您必须清除此复选框。

缺省情况下会选中在起始域中仅扫描各起始 URL 的目录中和目录下的链接复选框。

在作业的“安全性”页面上选择的“安全性测试策略”及其“服务器组”必须与该起始 URL 相符。如果服务器组准许扫描的 URL 或 IP 地址不在起始 URL 中,则不会测试它们的安全问题。

常见做法是将各扫描作业限制到一个站点。此最佳做法在仪表板中提供更佳的执行级别报告,并且通常会更好地反映组织内的不同业务线或职责领域。使用报告机制以任意方式聚集来自不同作业的数据。

其他域

确定您的起始 URL 外部是否存在包含您也想要检查的内容的域。如果您发现在第一次扫描时没有足够的内容受到扫描,请选中 Web 站点体系结构报告以查看是否有其他域可添加到扫描中。使用“扫描对象”页面添加其他域。

排除 Cookie 和参数

指定排除的 cookie 和参数是仅对一个页面实例计数的有效方式,只要特定查询字符串值更改(POST 数据或 cookie),此页面就会更改。例如,某个页面的 URL 可能有一个名为“navmenuhide=”的参数。参数的值会确定是隐藏还是显示页面上的导航菜单。此参数可能会采用值 0 或 1。如果要仅扫描此页面的一个版本,请在作业的“参数和 Cookie”页面上插入“navmenuhide=”作为“参数和 Cookie 排除内容”。此方法可以有助于缩小扫描的范围,以排除页面仅会展现细微差异的重复内容。

静态 URL

如果您站点上的 URL 不会更改,则扫描需要意识到这一事实,以便其可以使用替代方法来区分它们。无论站点是使用参数(查询字符串或 POST 数据)还是 cookie 来区分不同的页面,您都可以将它们识别为域的规范化规则的一部分。要对域配置规范化并使您的所有作业以相同方式识别此域中的页面,请转至作业的“扫描对象”页面,然后单击一个域编辑其属性。

JavaScript 和 Flash

当实施站点的初步扫描时,选中解析 JavaScript 以发现 URL 复选框。了解相应的选项后,确定 JavaScript 在站点上的使用程度和此 JavaScript 的复杂性。

如果站点上的 JavaScript 和 Flash 文件中有任何链接,请确保扫描可以找到它们。如果不能,则将它们添加到起始 URL,使用 XRule 模仿 Flash 逻辑。XRules 会添加到作业的“高级扫描选项 > XRule”页面。

定制错误页面

某些 Web 站点在遇到内部中断链接时会使用定制 404 页面来重定向浏览器。尽管它取决于这些类型的页面是如何设置的,但是它们可能会从服务器产生 200 类型响应,扫描作业会将其理解为未中断或“正常”。要减轻此误报的严重程度,请标识这些定制错误页面,以便扫描作业在遇到它们时会将其识别并报告为中断链接。

使用“一般扫描选项 > 定制错误页面”页面告诉扫描作业将哪些页面视为中断。可以通过作业或“管理”选项卡设置定制错误页面。

您可以通过在站点的浏览器中输入不正确的 URL 来快速确定站点是否使用定制 404 页面,并且查看它是产生具有唯一错误标题的页面还是重定向到一个唯一的 URL。如果是使用定制 404 页面,那么将所产生的页面标题或 URL 添加到“定制错误页面”页面。

排除内容

识别可以从扫描中排除,或者至少从初步扫描中排除的任何链接,如执行下列操作的链接:

  • 更改密码
  • 禁用帐户
  • 删除项,特别是它不可撤消时
  • 提供打印机友好格式的相同内容
  • 指向充当 HTML 占位符的不存在的透明图像,如 blank.gif 或 spacer.gif。通常,这些图像在 Web 服务器上不存在并且可以排除,以除去报告中的杂乱内容。

购物车功能

总是排除从“添加到购物车”类型的应用程序产生的 URL 模式。如果每秒有多个线程点击这些应用程序,则扫描可能会不适当地过度使用它们。对一个“添加到购物车”商品执行手动探索,以确保已对其进行测试。

使用“排除路径和文件”页面从扫描中排除站点的一部分。排除 regexp:.*addtocart.*

日历

日历可将扫描置入无限循环中,方法是使其扫描日历中每一年的每一天。请使用会话标识模式和排除来将此情况发生的概率最小化。

媒体文件

通常可以从扫描中排除诸如 .wmv 和 .mov 之类的大媒体文件。如果没有将其排除,则它们会大幅增加扫描站点所需的时间。

使用“排除路径和文件”页面从扫描中排除站点的一部分。

按表中的行或列排序

如果页面上的内容可以像包含可排序列的表一样进行排序,请考虑排除各已排序页面的 URL。例如,一个报告有两个不同的 URL,但是内容相同 - 已更改的唯一内容是“漏洞”列的排序。如果不将 URL 从各已排序的页面中排除,扫描作业将多次扫描相同的内容。使用“排除路径和文件”页面从扫描中排除站点的一部分。

登录和分步应用程序

试图忽略扫描登录页面时,需要考虑以下一些事项:

  • 应用程序是否要求一次性登录?使用“登录管理”页面来输入用户名和密码,以便扫描可以为您登录。
  • 登录页面是否重定向到其他域?如果是,将其他域作为内部域添加到作业中。要将域作为内部域添加,请转至“扫描对象”页面,然后单击添加域
  • 站点或应用程序的登录或入口页面是否由一系列分步表单组成?如果是,通过记录的登录顺序开始内容扫描。使用“登录管理”页面记录登录顺序。
  • 站点是否使用会话标识?如果是这样,那么可能需要添加会话标识作为扫描作业属性的一部分。要设置会话标识,请转至“参数和 Cookie”页面。当配置为“参数和 Cookie 排除内容”时,会添加这些会话标识以将 URL 规范化。当配置为会话标识时,它们使扫描能够在不被错误会话值中断的情况下继续扫描整个站点。
  • 站点是否使用 cookie 进行登录?仅在您将 cookie 设置为在您运行扫描之前自动登录的情况下,忽略登录扫描才可行。
  • 在登录表单后面是否有注销链接?如果有,排除注销链接,以便内容扫描不会跟随此链接并自行注销。注销大多数时候为“注销”按钮形式。其他常见变量为“注销”、“签出”和“退出”。在已报告的某些情况下,特定 Web 页面的链接可强制注销用户。如果注销按钮的所在位置或者会导致您从会话中注销的条件不明显,那么最好是与 Web 站点开发者联系。

表单

一些表单包含值会更改的属性。如果这些属性在扫描之间更改,则扫描作业会考虑各更改以反映唯一的表单并且报告各更改的表单,这意味着报告结果会因重复表单而增多。要避免这一问题,请将规范化规则应用到所扫描的域。通过编辑域的属性,可以从“扫描对象”页面将扫描作业所找到的 URL 和表单规范化。

请自动为扫描提供公共表单的值,以便扫描可以继续而不会中断。例如,如果扫描作业在 Web 站点或应用程序上多次遇到某个表单,那么它需要在每次遇到该表单时向其提供内容。使用“自动表单填写”页面添加诸如国家或地区名称等表单值,以便不必与每次出现的国家或地区名称表单进行个人交互。