ADC

HTML 跨站脚本检查

HTML 跨站点脚本(跨站点脚本)检查检查用户请求的标头和 POST 正文是否存在可能的跨站点脚本攻击。如果找到跨站点脚本,则会修改(转换)请求以使攻击无害,或阻止请求。

注意 : HTML 跨站点脚本(跨站点脚本)检查仅适用于内容类型、内容长度等。它不适用于 cookie。此外,请确保在 Web 应用程序防火墙配置文件中启用“检查重复程序”选项。

您可以通过使用违反 同一源规则的 HTML 跨站点脚本来防止在受保护的网站上滥用脚本,该脚本规则规定,脚本不得访问或修改除脚本所在的服务器以外的任何服务器上的内容。冲突相同源规则的任何脚本都称为跨站点脚本,使用脚本访问或修改另一台服务器上的内容的做法称为跨站点脚本。跨站点脚本是一个安全问题的原因是,允许跨站点脚本的 Web 服务器可能会受到攻击,该脚本不在该 Web 服务器上,而是在其他 Web 服务器上,例如攻击者拥有和控制的服务器上。

不幸的是,许多公司都安装了大量的 JavaScript 增强型 Web 内容,这些内容冲突了相同的来源规则。如果您在此类网站上启用 HTML 跨站点脚本检查,则必须生成适当的例外,以便检查不会阻止合法活动。

Web App Firewall 提供了实施 HTML 跨站点脚本保护的各种操作选项。除了“阻止”、“日志”、“统计信息”和“学习”操作之外,您还可以选择“转换跨站点脚本”,通过实体对提交的请求中的脚本标签进行编码来使攻击无害。您可以为跨站点脚本参数配置检查完整 URL,以指定是否不仅要检查查询参数,还要检查整个 URL 以检测跨站点脚本攻击。您可以配置 InspectQueryContenentTypes 参数来检查特定内容类型的跨站点脚本攻击的请求查询部分。

您可以部署放宽以避免误报。Web App Firewall 学习引擎可以提供配置放宽规则的建议。

要为应用程序配置优化的 HTML 跨站点脚本保护,请配置以下操作之一:

  • 阻止— 如果启用阻止,则如果在请求中检测到跨站点脚本标记,则会触发阻止操作。
  • 日志— 如果启用了日志功能,则 HTML 跨站点脚本检查会生成日志消息,指出它所执行的操作。如果禁用阻止,则会为检测到跨站点脚本违规的每个标题或表单字段生成单独的日志消息。但是,当请求被阻止时,只会生成一条消息。同样,每个请求会为转换操作生成 1 条日志消息,即使跨站点脚本标签在多个字段中转换也是如此。您可以监视日志以确定对合法请求的响应是否被阻止。日志消息数量的大幅增加可能表明尝试发起攻击。
  • 计数据— 如果启用,统计数据功能将收集有关冲突和日志的统计数据。统计数据计数器出现意外激增可能表明您的应用程序受到攻击。如果合法请求被阻止,您可能需要重新访问配置,以查看是否必须配置新的放松规则或修改现有的放松规则。
  • L@@earn— 如果您不确定哪些放宽规则可能最适合您的应用程序,则可以使用学习功能根据学习的数据生成 HTML 跨站点脚本规则建议。Web App Firewall 学习引擎监视流量,并根据观察到的值提供学习建议。为了在不影响性能的情况下获得最佳优势,您可能需要在短时间内启用学习选项,以获取具有代表性的规则示例,然后部署规则并禁用学习。
  • 转换跨站点脚本— 如果启用,Web App Firewall 将对与 HTML 跨站点脚本检查相匹配的请求进行以下更改:
    • 左角括号 (<) 到 HTML 字符实体等效 (<)
    • 直角括号 (>) 到 HTML 字符实体等效 (>)

这可以确保浏览器不会解释不安全的 html 标签,例如 <script>,从而运行恶意代码。如果同时启用请求标头检查和转换,则请求标头中找到的任何特殊字符也会被修改。如果受保护网站上的脚本包含跨站点脚本功能,但您的网站不依赖这些脚本来正常运行,则可以安全地禁用阻止并启用转换。此配置可确保不阻止任何合法的 Web 流量,同时阻止任何潜在的跨站点脚本攻击。

  • 检查完整的 URL 以进行跨站点脚本编写。如果启用了检查完整的 URL,Web App Firewall 将检查整个 URL 是否存在 HTML 跨站点脚本攻击,而不是仅检查查询部分 URL。
  • 选中请求标题。如果启用了请求标头检查,Web App Firewall 将检查 HTML 跨站点脚本攻击的请求标头,而不仅仅是 URL。如果使用 GUI,则可以在 Web App Firewall 配置文件的“设置”选项卡中启用此参数。
  • InspectQueryContentTypes。如果配置了请求查询检查,App Firewall 将检查针对特定内容类型的跨站点脚本攻击请求的查询。如果使用 GUI,则可以在应用程序防火墙配置文件的“设置”选项卡中配置此参数。

重要:

作为流更改的一部分,跨站点脚本标记的 Web App Firewall 处理已更改。此更改适用于 11.0 版本。此更改也适用于支持请求端流式传输的 10.5.e 的增强版本。在早期版本中,存在开括号 (<), or close bracket (>) 或两个开括号和右括号 (<>) 都被标记为跨站点脚本违规。行为在包含对请求端流支持的构建中发生了变化。只有近括号字符 (>) 不再被视为攻击。 即使存在开括号字符 (<),请求也会被阻止,并且被视为攻击。跨站点脚本攻击会被标记。

跨站点脚本细粒度放松

Web App Firewall 为您提供了一个选项,使特定表单字段、标头或 Cookie 免于跨站点脚本检查检查。您可以通过配置放宽规则完全绕过其中一个或多个字段的检查。

Web App Firewall 允许您通过微调放松规则来实现更严格的安全性。应用程序可能需要灵活性才能允许特定的模式,但配置放宽规则以绕过安全检查可能会使应用程序容易受到攻击,因为目标字段免于检查任何跨站点脚本攻击模式。跨站点脚本细粒度放宽提供了允许特定属性、标签和模式的选项。其余属性、标签和模式将被阻止。例如,Web App Firewall 当前具有超过 125 个被拒绝的特征码的默认集合。由于黑客可以在跨站点脚本攻击中使用这些模式,因此 Web App Firewall 将其标记为潜在威胁。您可以放松一个或多个被认为是安全的特定位置的图案。其余潜在危险的跨站点脚本模式仍会检查目标位置,并继续触发安全检查违规。您现在有更严格的控制。

放宽中使用的命令具有值类型值表达式的可选参数。值类型可以留空,或者您可以选择“标签”或“属性”或“板片”。如果将值类型留空,则指定 URL 的配置字段将免除跨站点脚本检查检查。 如果选择值类型,则必须提供值表达式。您可以指定值表达式是正则表达式还是文字字符串。当输入与允许和拒绝列表匹配时,只有放宽规则中配置的指定表达式才会被豁免。

Web App Firewall 具有以下跨站点脚本内置列表:

  1. 跨站点脚本允许的属性:有 52 个默认允许的属性,例如 abbraccesskey对齐altbgcolor边框单元格填充、 单元格间距charcharoff、字符集
  2. 跨站点脚本允许的标签:有 47 个默认允许的标签,例如, 地址basefontbgsound块引用, bgbr题, 中心引用dddel
  3. 跨站点脚本被拒绝模式:有 129 个默认被拒绝的模式,例如 fsCommandjavascript:onaBortonActivate

警告

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

需要注意的事项:

  • 值表达式是一个可选参数。字段名称可能没有任何值表达式。
  • 字段名称可以绑定到多个值表达式。
  • 必须为值表达式分配值类型。跨站点脚本值类型可以是:1) 标签、2) 属性或 3) 模式。
  • 每个字场名称/URL 组合可以有多个放宽规则
  • 表单字段名称和操作 URL 不区分大小写。

使用命令行配置 HTML 跨站点脚本检查

使用命令行配置 HTML 跨站点脚本检查操作和其他参数

如果使用命令行界面,则可以输入以下命令来配置 HTML 跨站点脚本检查:

  • set appfw profile“页面底部提供的参数说明。”)
  • <name> -crossSiteScriptingAction (([block] [learn] [log] [stats]) | [**none**])
  • set appfw profile“页面底部提供的参数说明。”)
  • <name> **-crossSiteScriptingTransformUnsafeHTML** (ON | OFF)
  • set appfw profile 页面底部提供的参数说明。
  • <name> -crossSiteScriptingCheckCompleteURLs (ON | OFF)
  • set appfw profile 页面底部提供的参数说明。
  • 页面底部提供的<name> - checkRequestHeaders (ON | OFF) 参数描述。”
  • 页面底部提供的<name> - CheckRequestQueryNonHtml (ON | OFF) 参数描述。”

使用命令行配置 HTML 跨站点脚本检查放宽规则

使用 bind 或取消绑定命令添加或删除绑定,如下所示:

  • bind appfw profile <name> -crossSiteScripting <String> [isRegex (REGEX | NOTREGEX)] <formActionURL> [-location <location>] [-valueType (Tag|Attribute|Pattern) [<valueExpression>] [-isValueRegex (REGEX | NOTREGEX) ]]
  • unbind appfw profile <name> -crossSiteScripting <String> <formActionURL> [-location <location>] [-valueType (Tag |Attribute|Pattern) [<valueExpression>]]

使用 GUI 配置 HTML 跨站点脚本检查

在 GUI 中,您可以在窗格中为与应用程序关联的配置文件配置 HTML 跨站点脚本检查。

使用 GUI 配置或修改 HTML 跨站点脚本检查

  1. 导航到应用程序防火墙 > 配置文件,突出显示目标配置文件,然后单击编辑
  2. 高级设置窗格中,单击安全检查

安全检查表显示当前为所有安全检查配置的操作设置。您有 2 个配置选项:

a. 如果要启用或禁用 HTML 跨站点脚本的“阻止”、“日志”、“统计信息”和“学习”操作,可以选中或清除表中的复选框,单 击“确定”,然后单击“保存并关闭”关闭“安 全检查”窗格。

b. 如果要为此安全检查配置更多选项,请双击 HTML 跨站点脚本,或者选择该行并单击 操作设置,以显示以下选项:

转换跨站点脚本-转换不安全脚本标记。

检查跨站点脚本的完整 URL— 检查完整的 URL 是否存在跨站点脚本冲突,而不是仅检查 URL 的查询部分。

更改上述任何设置后,单 击“确定”保存更改并返回“安全检查”表。如果需要,您可以继续配置其他安全检查。单击确定以保存在“安全检查”部分中所做的所有更改,然后单击保存并关闭以关闭“安全性检查”窗格。

若要启用或禁用 检查请求标头 设置,请在“高级设置”窗格中单击“配置文件设置”。在“常用设置”中,选中或清除“检查请求标头”复选框。单击 OK(确定)。 您可以使用 “配置文件设置” 窗格右上角的 X 图标关闭此部分,或者,如果已完成配置此配置文件,则可以单击 “ 成” 返回到 “应用 程序防火墙 ” > “配置 件”。

若要启用或禁用 检查请求查询非 HTML 设置,请在“高级设置”窗格中单击“配置文件设置”。在 常用设置中,选中或清除 检查请求查询非 HTML复选框。单击 OK(确定)。可以使用配置文件设置窗格右上角的 X 图标关闭此部分,或者,如果您已完成配置此配置文件,则可以单击完成返回到应用程序防火墙 > 配置文件

使用 GUI 配置 HTML 跨站点脚本放松规则的步骤

  1. 导航到应用程序防火墙 > 配置文件,突出显示目标配置文件,然后单击编辑
  2. 高级设置 窗格中,单击 放宽规则
  3. 在“放宽规则”表中,双击HTML 跨站点脚本条目,或将其选中,然后单击编辑
  4. HTML 跨站点脚本放宽规则对话框中,执行放宽规则的 添加编辑删除 用或禁用 操作。

注意

添加新规则时,除非选择值 类型字段中的标签属性模式选项,否则不会显示值表 达式字段。

使用可视化工具管理 HTML 跨站点脚本放宽规则

对于所有放宽规则的综合视图,可以突出显示“放宽规则”表中的 HTML 跨站点脚本行,然后单击可视化工具。已部署放宽的可视化工具为您提供了添加新规则或编辑现有规则的选项。您还可以通过选择节点并单击放宽可视化工具中的相应按钮来启用禁用一组规则。

使用 GUI 查看或自定义跨站点脚本模式

您可以使用 GUI 查看或自定义跨站点脚本允许的属性或允许的标签的默认列表。您还可以查看或自定义跨站点脚本拒绝模式的默认列表。

默认列表在“应用程序防火墙”>“签名”>“默认签”中指定。 如果未将任何签名对象绑定到配置文件,则配置文件将使用默认签名对象中指定的默认跨站点脚本允许和拒绝列表进行跨站点脚本安全检查处理。在默认签名对象中指定的标签、属性和板片是只读的。您无法编辑或修改它们。 如果要修改或更改它们,请创建默认签名对象的副本以创建用户定义的签名对象。在新的用户定义签名对象中对允许或拒绝列表进行更改,并在您的配置文件中使用此签名对象,该对象正在处理要使用这些自定义允许和拒绝列表的流量。

  1. 要查看默认跨站点脚本模式:

a. 导航到“应用程序防火墙”>“签名”,选择“默认签名”,然后单击“编辑”。然后单击管理 SQL/跨站点脚本模式

管理 SQL/ 跨站点脚本路径 ” 表显示了与跨站点脚本相关的以下三行:

xss/allowed/attribute

xss/allowed/tag

xss/denied/pattern

b. 选择一行,然后单击“管理元素”以显示 Web App Firewall 跨站点脚本检查所使用的相应 跨站点脚本 元素(标记、属性、模式)。

  1. 自定义跨站点脚本元素:您可以编辑用户定义的特征对象以自定义允许的标记、允许的属性和拒绝的模式。您可以添加新条目或删除现有条目。

a. 导航到 应用防火墙 > 签名,突出显示目标用户定义的签名,然后单击 编辑。单击管理 SQL/跨站点脚本模式以显示管理 SQL/跨站点脚本路径表。

b. 选择目标跨站点脚本行。

i. 单击 管理元素加、 编辑删除 相应的跨站点脚本元素。

ii. 单击 “ 移除 ” 以删除选定的行。

警告:

在删除或修改任何默认的跨站点脚本元素或删除跨站点脚本路径以删除整行之前,必须小心。签名规则和跨站点脚本安全检查依赖于这些元素来检测攻击以保护您的应用程序。如果在编辑过程中删除所需模式,自定义跨站点脚本元素可能会使应用程序容易受到跨站点脚本攻击。

将学习功能与 HTML 跨站点脚本检查结合使用

启用 “学习” 操作后,Citrix Web App Firewall 学习引擎将监控流量并了解跨站点脚本 URL 冲突。您可以定期检查跨站点脚本 URL 规则并针对误报情况进行部署。

注意 : 在群集配置中,所有节点必须具有相同版本才能部署跨站点脚本 URL 规则。

HTML 跨站点脚本学习增强功能。Citrix ADC 软件的 11.0 版中引入了 Web App Firewall 学习增强功能。要部署精细的 HTML 跨站点脚本松弛,Web App Firewall 提供精细的 HTML 跨站点脚本学习。 学习引擎针对观察到的值类型(标签、属性、模式)以及在输入字段中观察到的相应值表达式提出建议。除了检查被阻止的请求以确定当前规则是否限制性太强且需要放宽之外,您还可以查看学习引擎生成的规则,以确定哪些值类型和值表达式触发了违规,需要在放宽规则中加以解决。

注意 : Web App Firewall 的学习引擎只能区分名称的前 128 个字节。如果表单具有多个字段,名称与前 128 个字节匹配,则学习引擎可能无法区分它们。同样,部署的放宽规则可能会无意中放宽 HTML 跨站点脚本检查中的所有这些字段。 提示

超过 12 个字符的跨站点脚本标记无法正确学习或记录。

如果你需要更大的标签长度来学习,你可以在 AS_跨Site Script_Allowed_tags_List 中添加一个不出现的大标签,表示长度为 “x”。

使用命令行界面查看或使用学习的数据

在命令提示符下,键入以下命令之一:

  • show appfw learningdata <profilename> crossSiteScripting
  • rm appfw learningdata <profilename> -crossSiteScripting <string> <formActionURL> [<location>] [<valueType> <valueExpression>]
  • export appfw learningdata <profilename> **crossSiteScripting*

使用 GUI 查看或使用学习的数据

  1. 导航到应用程序防火墙 > 配置文件,突出显示目标配置文件,然后单击编辑
  2. 在“高级设置”窗格中,单击“学习规则”。您可以在“学习规则”表中选择 HTML 跨站点脚本 条目,然后双击该条目以访问学习的规则。该表显示 “ 字段名称”、“UTURL”、“ 值类型”、“ ” 和 “ 点击 ” 列。您可以部署已学习的规则或编辑规则,然后再将其部署为放宽规则。要放弃规则,您可以选择该规则并单击 过按钮。您一次只能编辑一个规则,但可以选择要部署或跳过的多个规则。

还可以选择通过选择“学习规则”表中的 HTML 跨站点脚本条目,然后单击可视化工具以获取所有学习冲突的综合视图来显示已学习放宽的摘要视图。可视化工具可以轻松管理学习的规则。它在一个屏幕上提供了一个全面的数据视图,并且只需点击一下便于对一组规则采取操作。可视化工具的最大优势是它推荐正则表达式来整合多个规则。您可以根据分隔符和操作 URL 选择这些规则的子集。通过从下拉列表中选择数字,可以在可视化工具中显示 25、50 或 75 条规则。学习规则的可视化工具提供了编辑规则并将其作为放宽部署的选项。或者您可以跳过规则忽略它们。

将日志功能与 HTML 跨站点脚本检查结合使用

启用日志操作后,HTML 跨站点脚本安全检查冲突将作为 AppFW_跨Site 脚本 违规记录在审计日志中。Web App Firewall 支持本机和 CEF 日志格式。您也可以将日志发送到远程 syslog 服务器。

使用命令行访问日志消息

切换到 shell 并尾部 /var/log/ 文件夹中的 ns.logs 以访问与 HTML 跨站点脚本违规相关的日志消息:

Shell tail -f /var/log/ns.log | grep APPFW_cross-site scripting

CEF 日志格式的跨站点脚本安全检查违规日志消息示例:

Jul 11 00:45:51 <local0.info> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|\*\*APPFW_cross-site scripting\*\*|6|src=10.217.253.62 geolocation=Unknown spt=4840 method=GET request=http://aaron.stratum8.net/FFC/CreditCardMind.html?abc=%3Cdef%3E msg=\*\*Cross-site script check failed for field abc="Bad tag: def"\*\* cn1=133 cn2=294 cs1=pr_ffc cs2=PPE1 cs3=eUljypvLa0BbabwfGVE52Sewg9U0001 cs4=ALERT cs5=2015 act=\*\*not blocked\*\*
<!--NeedCopy-->

以本机日志格式显示转换操作的跨站点脚本安全检查冲突日志消息示例

Jul 11 01:00:28 <local0.info> 10.217.31.98 07/11/2015:01:00:28 GMT ns 0-PPE-0 : default APPFW \*\*APPFW_cross-site scripting\*\* 132 0 :  10.217.253.62 392-PPE0 eUljypvLa0BbabwfGVE52Sewg9U0001 pr_ffc http://aaron.stratum8.net/FFC/login.php?login_name=%3CBOB%3E&passwd=&drinking_pref=on &text_area=&loginButton=ClickToLogin&as_sfid=AAAAAAVFqmYL68IGvkrcn2pzehjfIkm5E6EZ9FL8YLvIW_41AvAATuKYe9N7uGThSpEAxbb0iBx55jyvqOZNiVK_XwEPstMYvWHxfUWl62WINwRMrKsEDil-FC4llF \*\*Cross-site script special characters seen in fields <transformed>\*\*
<!--NeedCopy-->

使用 GUI 访问日志消息

Citrix GUI 包括一个用于分析日志消息的有用工具(系统日志查看器)。您有多个用于访问 Syslog 查看器的选项:

  • 导航到应用程序防火墙 > 配置文件,选择目标配置文件,然后单击安全检查。突出显示 HTML 跨站点脚本 行并单击 日志 。当您直接从配置文件的 HTML 跨站点脚本检查访问日志时,GUI 会过滤掉日志消息,并仅显示与这些安全检查冲突有关的日志。
  • 您还可以通过导航到 Citrix ADC > 系统 > 审核 访问系统 日志查看器。 在 审计消息 部分,单击 Syslog 消息 链接以显示 Syslog Viewer,该查看器显示所有日志消息,包括其他安全检查违规日志。这对于在请求处理过程中可能触发多个安全检查冲突时进行调试非常有用。
  • 导航到 应用程序防火墙 > 策略 > 审核 。在审计消息部分,单击 Syslog 消息 链接以显示 Syslog Viewer,该查看器显示所有日志消息,包括其他安全检查违规日志。

基于 HTML 的 Syslog 查看器提供了各种筛选选项,用于仅选择您感兴趣的日志消息。 要为 HTML 跨站点脚本 检查选择日志消息,请通过在 模块 的下拉列表选项中选择 APPFW进行筛选。“事件类型”列表提供了一系列丰富的选项,以进一步优化您的选择。例如,如果选中 AppFW_跨Site 脚本 复选框并单击 应用 按钮,则只有与 HTML 跨站点脚本安全检查冲突相关的日志消息才会显示在 Syslog Viewer 中。

如果将光标放在特定日志消息的行中,则日志消息下面会出现多个选项,如 模块事 件类型事件 ID客户端 IP 等。您可以选择这些选项中的任何一个以突出显示日志消息中的相应信息。

单击部署 功能仅在 GUI 中可用。您可以使用 Syslog 查看器不仅查看日志,还可以根据 Web App Firewall 安全检查冲突的日志消息部署 HTML 跨站点脚本放宽规则。此操作的日志消息必须采用 CEF 日志格式。单击以部署功能仅适用于由阻止(或不阻止)操作生成的日志消息。不能为有关转换操作的日志消息部署放宽规则。

要从 Syslog 查看器部署放宽规则,请选择日志消息。选定行的“系统日志查看器”框的右上角将出现一个复选框。选中该复选框,然后从 “ 操作 ” 列表中选择一个选项以部署放宽规则。“全部编辑和部署”、“部署”和“全部部署”均可用作“作”选项。

使用“单击以部署”选项 部署的 HTML 跨站点 脚本规则不包括精细粒度放宽建议。

使用 GUI 配置单击以部署功能

  1. 在 Syslog 查看器中,在 模块 选项中选择 APPFW
  2. 选择 App_跨站点脚本 作为事 件类型 以筛选相应的日志消息。
  3. 选中此复选框以标识要部署的规则。
  4. 使用“ 作”下拉列表的选项部署放宽规则。
  5. 验证规则是否显示在相应的放宽规则部分。

HTML 跨站点脚本冲突的统计信息

启用统计操作时,当 Web App Firewall 对此安全检查采取任何操作时,HTML 跨站点脚本检查的计数器会递增。这些统计数据是针对流量、冲突和日志的速率和总计数收集的。日志计数器的增量大小可能会因配置的设置而异。例如,如果启用了阻止操作,对包含 3 个 HTML 跨站点脚本冲突的页面的请求将统计数据计数器递增一个,因为一旦检测到第一个冲突,该页面就会被阻止。但是,如果禁用了块,则处理相同的请求会将冲突的统计数据计数器和日志增加三个,因为每个冲突都会生成一个单独的日志消息。

使用命令行显示 HTML 跨站点脚本检查统计信息

在命令提示符下,键入:

> sh appfw stats

要显示特定配置文件的统计信息,请使用以下命令:

> **stat appfw profile** <profile name>

使用 GUI 显示 HTML 跨站点脚本统计信息

  1. 导航到“安全”>“应用程序防火墙”>“配置文件”>“统计”
  2. 在右窗格中,访问 统计信息 链接。
  3. 使用滚动条查看有关 HTML 跨站点脚本冲突和日志的统计信息。统计表提供实时数据,每 7 秒更新一次。

重要内容

  • 内置对 HTML 跨站点脚本攻击保护的支持— Citrix Web App Firewall 通过监控接收到的有效负载中允许的属性和标签以及拒绝模式的组合,来防止跨站点脚本攻击。在 /netscaler/default_custom_settings.xml 文件中指定了跨站点脚本检查使用的所有内置默认允许标签、允许的属性和拒绝的模式。
  • CustomizatioN-您可以更改标签、属性和模式的默认列表,以根据应用程序的特定需求自定义跨站点脚本安全检查检查。创建默认签名对象的副本、修改现有条目或添加新条目。将此签名对象绑定到您的配置文件以利用自定义配置。
  • 混合安全模型— 签名和深度安全防护都使用绑定到配置文件的签名对象中指定的 SQL/ 跨站点脚本模式。如果没有签名对象绑定到配置文件,则使用默认签名对象中存在的 SQL/ 跨站点脚本模式。
  • 转换— 请注意有关转换操作的以下内容:

转换操作独立于其他跨站点脚本操作设置。如果启用了转换,并且禁用了阻止、日志、统计和学习,则会转换跨站点脚本标记。

如果启用了阻止操作,则该操作优先于转换操作。

  • 精细的放松和学习。微调放松规则,以放松安全检查中的一部分跨站点脚本元素,但检测其余部分。学习引擎根据观测到的数据推荐特定的值类型和值表达式。
  • 单击以部署— 在 syslog 查看器中选择一个或多个跨站点脚本违规日志消息,并将其作为放松规则进行部署。
  • Charset— 必须根据应用程序的需要设置配置文件的默认字符集。默认情况下,配置文件字符集设置为美国英语 (ISO-8859-1)。如果在没有指定字符集的情况下收到请求,Web App Firewall 会像 ISO-8859-1 一样处理请求。如果开括号字符 (<) or the close bracket character (>) 在其他字符集中编码,则不会将这些字符解释为跨站点脚本标签。例如,如果请求包含 UTF-8 字符串“%uff1cscript%uff1e,但请求页上未指定字符集,则可能不会触发跨站点脚本冲突,除非将配置文件的默认字符集指定为 Unicode。