Citrix ADC

JSON 跨站点脚本保护检查

如果传入的 JSON 负载包含恶意跨站脚本数据,WAF 会阻止该请求。以下过程说明了如何通过 CLI 和 GUI 界面进行配置。

配置 JSON 跨站点脚本保护

要配置 JSON 跨站脚本保护,必须完成以下步骤:

  1. 将应用程序防火墙配置文件添加为 JSON。
  2. 配置 JSON 跨站脚本操作以阻止跨站脚本恶意负载

添加 JSON 类型的应用程序防火墙配置文件

您必须首先创建一个配置文件,指定应用程序防火墙必须如何保护您的 JSON Web 内容免受 JSON 跨站脚本攻击。

在命令提示符下,键入:

add appfw profile <name> -type (HTML | XML | JSON)

注意

将配置文件类型设置为 JSON 时,HTML 或 XML 等其他检查将不适用。

示例

add appfw profile profile1 –type JSON

JSON 跨站脚本违规的示例输出

JSONcross-site scriptingAction: block log stats
Payload: {"username":"<a href="jAvAsCrIpT:alert(1)">X</a>","password":"xyz"}

Log message: Aug 19 06:57:33 <local0.info> 10.106.102.21 08/19/2019:06:57:33 GMT  0-PPE-0 : default APPFW APPFW_JSON_cross-site scripting 58 0 :  10.102.1.98 12-PPE0 - profjson http://10.106.102.24/ Cross-site script check failed for object value(with violation="Bad URL: jAvAsCrIpT:alert(1)") starting at offset(12). <blocked>

Counters
   1  357000                  1 as_viol_json_xss
   3  0                       1 as_log_json_xss
   5  0                       1 as_viol_json_xss_profile appfw__(profjson)
   7  0                       1 as_log_json_xss_profile appfw__(profjson)

<!--NeedCopy-->

配置 JSON 跨站点脚本操作

您必须配置一个或多个 JSON 跨站脚本操作,以保护您的应用程序免受 JSON 跨站点脚本攻击。 在命令提示符下,键入:

set appfw profile <name> - JSONcross-site scriptingAction [block] [log] [stats] [none]

示例

set appfw profile profile1 –JSONcross-site scriptingAction block

可用的跨站点脚本操作包括: 阻止-阻止违反此安全检查的连接。 日志-记录此安全检查的冲突情况。 统计信息-为此安全检查生成统计信息。 无-禁用此安全检查的所有操作。

注意: 要启用一个或多个操作,请键入“set appfw profile - JSONcross-site scriptingActionn”,然后键入要启用的操作。

示例

set appfw profile profile1 -JSONSQLInjectionAction block log stat

使用 Citrix GUI 配置 JSON 跨站点脚本(跨站点脚本)保护

请按照以下步骤设置跨站点脚本(跨站点脚本)保护设置。

  1. 在导航窗格中,导航到 “ 安全 ” > “ 配置文件”。
  2. 在 “ 配置文件 ” 页面中,单击 “ 添加”。
  3. Citrix Web App Firewall 配置文件 页面中,单击 高级设置 下的 安全检查
  4. 在“安全检查”部分,转到 JSON 跨站点脚本(跨站点脚本) 设置。
  5. 单击复选框旁边的可执行文件图标。

    JSON 跨站脚本安全检查

  6. 单击 操作设置 以访问 JSON 跨站点脚本设置 页面。
  7. 选择 JSON 跨站脚本操作。
  8. 单击确定

    JSON 跨站脚本安全检查

  9. Citrix Web App Firewall 配置文件 页面中,单击 高级设置 下的 放宽规则
  10. 在“放宽规则”部分中,选择“JSON 跨站点脚本设置”,然后单击“编辑”。

    JSON 跨站脚本安全检查

  11. JSON 跨站点脚本放宽规则 页面中,单击 添加 以添加 JSON 跨站点脚本放宽规则。
  12. 输入请求必须发送到的 URL。发送到此 URL 的所有请求都不会被阻止。
  13. 单击创建

    JSON 跨站脚本安全检查

为基于 JSON 的跨站点脚本配置精细放宽

Web App Firewall 为您提供了从基于 JSON 的跨站脚本 (XSS) 检查检查中放宽特定 JSON 键或值的选项。您可以使用细粒度松弛规则配置多个选项来放宽 JSON 负载。 以前,为 JSON 保护检查配置放宽的唯一方法是指定整个 URL,这将绕过对整个 URL 的验证。 基于 JSON 的 SQL 安全保护为以下方面提供了放宽:

  • 注册表名称
  • 注册表值

基于 JSON 的跨站点脚本 (XSS) 保护使您能够配置允许特定模式并阻止其余模式的放宽。例如,Web App Firewall 当前有一组默认的 SQL 关键字超过 100 个。由于黑客可以在 SQL 注入攻击中使用这些关键字,因此 Web App Firewall 会将所有关键字标记为潜在威胁。如果您想放宽一个或多个被认为对特定位置安全的关键字,则可以配置放宽规则,以绕过安全检查并阻止其余关键字。 放宽中使用的命令具有值类型和值表达式的可选参数。您可以指定值表达式是正则表达式还是文字字符串。值类型可以留空,也可以选择关键字或特殊字符串。

注意:

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

需要考虑的要点

  • 值表达式是可选参数。字段名称可能没有任何值表达式。
  • 一个注册表名称可以绑定到多个值表达式。
  • 必须为值表达式分配值类型。值类型包括标签、属性和模式。
  • 每个键名/URL 组合可以有多个放宽规则。

使用命令界面为跨站脚本 (XSS) 注入攻击配置 JSON 细粒度放宽

要配置 JSON 文件颗粒放宽规则,必须将细粒度松弛实体绑定到 Web App Firewall 配置文件。

在命令提示符下,键入:

bind appfw profile <profile name> -jsonxssURL <URL> -key <key name> -isregex <REGEX/NOTREGEX> -valueType <keyword/SpecialString> <value Expression> -isvalueRegex <REGEX/NOTREGEX>
<!--NeedCopy-->

示例:

bind appfw profile appprofile1 -jsonxssurl www.example.com -key name  -isRegex NOTREGEX -valueType Tag “sname” -isvalueRegex NOTREGEX
<!--NeedCopy-->

使用 GUI 配置基于 JSON 的跨站点脚本 (XSS) 注入细粒度松弛规则

  1. 导航到 应用程序防火墙 > 配置文件,选择一个配置文件,然后单击 编辑
  2. “高级设置” 窗格中,单击 “ 放宽规则”。
  3. 放宽规则 部分中,选择一个 JSON SQL 注入记录,然后单击 编辑
  4. 在“JSON 跨站点脚本放宽规则”滑块中,单击“添加”。
  5. JSON 跨站点脚本放宽规则 页面中,设置以下参数。

    1. 已启用
    2. 是名字正则表达式
    3. 注册表项名称
    4. URL
    5. 值类型
    6. 注意
    7. 资源 ID
  6. 单击创建

用于跨站点脚本的 JSON 细粒度放松

JSON 跨站点脚本保护检查