CSRF 表单标记检查

跨站请求伪造 (CSRF) 表单标记检查由受保护的网站发送给具有唯一和不可预知的 FormID 的用户的每个 Web 表单,然后检查用户返回的 Web 表单,以确保提供的 FormID 是正确的。此检查可防止跨站点请求伪造攻击。此检查仅适用于包含 Web 表单的 HTML 请求,包含或不包含数据。它不适用于 XML 请求。

CSRF 表单标记检查可防止攻击者使用自己的 Web 表单向受保护的网站发送带有数据的大量表单响应。与深入分析 Web 表单的某些其他安全检查相比,此检查所需的 CPU 处理能力相对较少。因此,它能够处理大容量攻击,而不会严重降低受保护网站或 Web App Firewall 本身的性能。

在启用 CSRF 表单标记检查之前,您应该注意以下事项:

  • 您需要启用表单标记。CSRF 检查取决于表单标记,没有它不起作用。
  • 对于包含受该配置文件保护的表单的所有网页,您应禁用 Citrix ADC 集成缓存功能。集成缓存功能和 CSRF 表单标记不兼容。
  • 您应该考虑启用裁判员检查。引用检查是“开始 URL”检查的一部分,但它可以防止跨站点请求伪造,而不是“开始 URL”冲突。与 CSRF 表单标记检查相比,引用检查还会给 CPU 带来更少的负载。如果请求冲突了 Referer 检查,它会立即被阻止,因此不会调用 CSRF 表单标记检查。
  • CSRF 表单标记检查不适用于在表单源 URL 和表单操作 URL 中使用不同域的 Web 表单。例如,CSRF 表单标记不能保护具有表单源 URLhttp://www.example.comhttp://www.example.org/form .pl 的表单操作 URL 的 Web 表单,因为 example.com 和 example.org 是不同的域。

如果您使用向导或 GUI,则在“修改 CSRF 表单标记复选”对话框中的“常规”选项卡上,您可以启用或禁用“阻止”、“日志”、“学习”和“统计”操作。

如果使用命令行界面,则可以输入以下命令来配置 CSRF 表单标记检查:

  • set appfw profile <name> -CSRFtagAction [**block**] [**log**] [**learn**] [**stats**] [**none**]

若要指定 CSRF 表单标记检查的放宽,您必须使用 GUI。在“修改 CSRF 表单标记复选”对话框的“检查”选项卡上,单击“添加”以打开“添加 CSRF 表单标记检查扩展”对话框,或选择现有的扩展,然后单击“打开”以打开“修改 CSRF 表单标记检查扩展”对话框。任何一个对话框都提供了用于配置放宽的相同选项。

当您将 Citrix Web App Firewall 会话限制设置为 0 或更低值时,系统会生成警报,因为此类设置会影响需要正常运行的 Web App Firewall 会话的高级保护检查功能。

以下是 CSRF 表单标记检查放宽的示例:

注意:以下表达式是可在“表单源 URL”和“表单操作 URL”角色中使用的 URL 表达式。

  • 选择以查询http://www.example.com/search.pl? 后包含任何字符串开头的 URL,新查询除外:

     ^http://www[.]example[.]com/search[.]pl?[^?]*$
    
  • 选择以路径http://www.example-español.com 和文件名开头的 URL,这些路径和文件名由路径中的大写字母和小写字母、数字、非 ASCII 特殊字符和所选符号组成。n 字符和任何其他特殊字符表示为编码的 UTF-8 字符串,其中包含分配给 UTF-8 字符集中每个特殊字符的十六进制代码:

    ^http://www[.]example-espa\xC3\xB1ol[.]com/(([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
  • 选择包含字符串/搜索 .cgi 的所有 URL? :
    ^[^?<>]\*/search[.]cgi?[^?<>]\*$

重要

正则表达式非常强大。如果您不完全熟悉 PCRE 格式的正则表达式,请仔细检查您编写的任何正则表达式。确保他们准确地定义了要添加为例外的 URL,而不是别的。粗心地使用通配符,尤其是点星号 (.*) 元字符/通配符组合,可能会产生您不希望的结果,例如阻止访问您不打算阻止的 Web 内容,或允许检查会阻止的攻击。

提示

启用“开始 URL 操作”下启用了 enableValidate 反向链接标头时,请确保反向链接标头 URL 也添加到 StartURL 中。

注意

当 Citrix ADC 达到应用程序的限制并启用 CSRF 检查时,Web 应用程序将无响应。

要防止 Web 应用程序冻结,请使用以下命令减少会话超时并增加会话限制:

来自 CLI:> set appfw settings –sessiontimeout 300 From shell: root@ns# nsapimgr_wr.sh -s appfw_session_limit=200000 在达到 appfw_session_limit 时 记录并生成 SNMP 警报可帮助您解决问题和调试问题。

CSRF 表单标记检查