Citrix ADC

SQL注入检查

许多Web应用程序都具有使用SQL与关系数据库服务器通信的Web表单。恶意代码或黑客可以使用不安全的Web表单将SQL命令发送到Web服务器。Web应用防火墙HTML SQL注入检查提供了特殊防御,防止注入可能会破坏安全性的未经授权的 SQL 代码。如果 Web App Firewall 检测到用户请求中未经授权的 SQL 代码,则会转换请求、使 SQL 代码处于非活动状态或阻止请求。Web App Firewall 在三个位置检查注入 SQL 代码的请求负载:1) POST 正文、2) 标头和 3) Cookie。要检查注入 SQL 代码请求中的查询部分,请为特定内容类型配置应用程序防火墙配置文件设置 “InspectQueryContentType”。

一组默认的关键字和特殊字符提供了通常用于启动SQL攻击的已知关键字和特殊字符。您可以添加新模式,并且可以编辑默认集以自定义SQL检查检查。Web应用防火墙提供了实施 SQL 注入保护的各种操作选项。除了“阻止", "日志", "统计信息“和”学习操作外,网络应用防火墙配置文件还提供了转换SQL特殊字符以使攻击无害的选项。

除了操作之外,还可以为SQL注入处理配置几个参数。您可以检查SQL通配符。您可以更改SQL注入类型,并选择4个选项(SQLKeywordSQLSplCharSQLSplCharANDKeywordSQLSplCharORKeyword)中的一个,以指示如何在处理有效负载时评估SQL关键字和SQL特殊字符。SQL注释处理参数为您提供了一个选项,用于指定SQL注入检测期间需要检查或豁免的注释类型。

您可以部署放宽以避免误报。Web应用防火墙学习引擎可以提供配置放宽规则的建议。

以下选项可用于为应用程序配置优化的SQL注入保护:

-仅当输入与SQL注入类型规范匹配时才会触发块操作。例如,如果将SQLSplCharANDKeyword配置为SQL注入类型,则即使在输入中检测到SQL特殊字符,也不会阻止请求,如果请求不包含关键字。如果SQL注入类型设置为SQLSplCharSQLSplCharORKeyword,则此类请求将被阻止。

日志-如果启用日志功能,则SQL注入校验会生成日志消息,指示它所执行的操作。如果禁用阻止操作,则会为检测到 SQL 冲突的每个输入字段生成单独的日志消息。 但是,当请求被阻止时,只会生成一条消息。同样,每个请求都会为转换操作生成一条日志消息,即使 SQL 特殊字符在多个字段中转换也是如此。您可以监视日志以确定对合法请求的响应是否被阻止。日志消息数量的大幅增加可能表明尝试发起攻击。

计数据-如果启用、统计数据功能将收集有关冲突和日志的统计数据。统计数据计数器出现意外激增可能表明您的应用程序受到攻击。如果合法请求被阻止,您可能需要重新访问配置,以查看是否需要配置新的放宽规则或修改现有的放宽规则。

L@@——如果您不确定哪些SQL弛豫规则可能最适合您的应用程序,则可以使用学习功能根据学习的数据生成建议。Web应用防火墙学习引擎监视流量,并根据观察到的值提供SQL学习建议。为了在不影响性能的情况下获得最佳优势,您可能需要在短时间内启用学习选项,以获取具有代表性的规则示例,然后部署规则并禁用学习。

转换SQL特殊字符——Web应用防火墙将三个字符(单直引号(')、反斜杠()和分号(,)视为SQL安全检查处理的特殊字符。SQL转换功能修改HTML请求中的SQL注入代码,以确保请求无害。然后将修改的HTML请求发送到服务器。所有默认转换规则都在/ netscaler default_custom_settings.xml文件中指定。

转换操作通过对请求进行以下更改来使SQL代码处于非活动状态:

  • 单直引(')至双直引(")。
  • 反斜杠 () 到双反斜杠 ()。
  • 分号 (;) 被完全删除。

这三个字符(特殊字符串)是向SQL服务器发出命令所必需的。除非SQL命令前面有一个特殊字符串,否则大多数SQL服务器会忽略该命令。因此,Web应用防火墙在启用转换时执行的更改阻止攻击者注入活动SQL。进行这些更改后, 可以安全地将请求转发到受保护的网站。当受保护网站上的Web表单可以合法地包含SQL特殊字符串,但Web表单不依赖特殊字符串来正常运行时,您可以禁用阻止并启用转换来防止阻止合法的网络表单数据,而不会降低Web应用防火墙为受保护的Web站点提供的保护程度。

转换操作独立于SQL注入类型设置。如果启用转换并且 SQL 注入类型被指定为 SQL 关键字,则即使请求不包含任何关键字,也会转换 SQL 特殊字符。

提示

通常,您可以启用转换或阻止,但不能同时启用两者。如果启用了阻止操作,则该操作优先于转换操作。如果启用了阻止,则启用转换是冗余的。

检查SQL通配符-可以使用通配符来扩大SQL (SQL- select)语句的选择范围。这些通配符运算符可以与艾克和没有T莱克阀门E运算符一起使用,将值与类似值进行比较。百分比 (%) 和下划线 (_) 字符经常用作通配符。百分号类似于与ms - dos一起使用的星号(*)通配符,以匹配字段中的零个、一个或多个字符。下划线类似于ms-dos问号(?)通配符。它匹配表达式中的单个数字或字符。

例如,您可以使用以下查询执行字符串搜索以查找名称包含d字符的所有客户。

SELECT * from customer WHERE name: %D%

以下示例组合运算符以查找在第二位和第三位具有 0 的任何工资值。

SELECT * from customer WHERE薪资为“_00%”

不同的DBMS供应商通过添加额外的运算符来扩展通配符。Citrix Web App Firewall 可以通过注入这些通配符来防范攻击。5 个默认的通配符是百分比 (%)、下划线 (_)、脱字符 (^)、开括号 ([) 和右括号 (])。此保护适用于 HTML 和 XML 配置文件。

默认通配符是在*默认签名中指定的文字列表

  • < wildchar类型=“文字”> % < / wildchar >
  • < wildchar类型=“文字”> _ < / wildchar >
  • < wildchar类型=“文字”> ^ < / wildchar >
  • < wildchar type = "文字“> < / wildchar >
  • < wildchar type = "文字“> < / wildchar >

攻击中的通配符可以是pcre,例如[^ a-f]。Web应用防火墙也支持 PCRE 通配符,但上面的文字通配符足以阻止大多数攻击。

注意: SQL通配符校验与SQL特殊字符校验不同。此选项必须谨慎使用,以避免误报。

查包含SQL注入类型的请求——Web应用防火墙提供4个选项,用于根据应用程序的个别需求实现SQL注入检查所需的严格程度。根据注入类型规范检查请求,以检测SQL冲突行为。4个SQL注入类型选项是:

  • SQL特殊字符和关键字-输入中必须存在SQL关键字和SQL特殊字符才能触发SQL冲突。此限制性最小的设置也是默认设置。
  • SQL特殊字符-输入中必须至少有一个特殊字符才能触发SQL冲突。
  • SQL关键字-输入中必须至少有一个指定的SQL关键字才能触发SQL冲突。不要在没有适当考虑的情况下选择此选项。要避免误报,请确保输入中没有预期的关键字。
  • SQL特殊字符或关键字-输入中必须存在键字或特殊字符串,才能触发安全检查冲突。

提示:

如果将Web应用防火墙配置为检查包含SQL特殊字符的输入,则Web应用防火墙会跳过不包含任何特殊字符的Web表单字段。由于大多数SQL服务器不处理前面没有特殊字符的SQL命令,启用此选项可以显著减少Web应用防火墙上的负载并加快处理速度,而不会使受保护的网站处于风险之中。

SQL注释处理-默认情况下,Web应用防火墙会检查注入的SQL命令的所有SQL注释。但是,许多SQL服务器忽略注释中的任何内容,即使前面有SQL特殊字符也是如此。为了更快地处理,如果SQL服务器忽略注释,则可以将Web应用防火墙配置为在检查注入SQL的请求时跳过注释。SQL注释处理选项是:

  • ANSI-跳过ANSI格式的SQL注释,这些注释通常由基于Unix的SQL数据库使用。例如:
    • —(两个连字符)—这是以两个连字符开头并以行尾结束的评论。

    • {} - 括号(括号附带注释。{ 位于注释之前,} 位于注释之后。大括号可以分界定单行或多行注释,但注释不能嵌套)

    • /* */: C风格注释(不允许嵌套注释)。请注意/*!<以斜杠开头,后面跟着星号和感叹号的注释不是注释> */

    • MySQL服务器支持C风格的注释的一些变体。这些使您可以通过使用以下形式的注释来编写包含MySQL扩展的代码,但仍可移植:/ * !mysql特定代码*/

    • .#: Mysql评论:这是以#个字符开头的评论。

  • 嵌套——跳过嵌套SQL注释,这些注释通常由Microsoft SQL Server使用例。如;-(两个连字符)和/ * * /(允许嵌套注释)
  • ANSI /嵌套-跳过同时遵守ANSI和嵌套SQL注释标准的注释。仅匹配ANSI标准或只匹配嵌套标准的注释仍然会检查注入的sql。
  • 检查所有注释-检查注入SQL的整个请求而不跳过任何内容。此为默认设置。

提示

通常,除非你的后端数据库在Microsoft SQL Server上运行,否则不得选择嵌套或ANSI /嵌套选项。大多数其他类型的SQL Server软件无法识别嵌套注释。如果嵌套注释出现在指向另一类 SQL 服务器的请求中,则它们可能表示企图破坏该服务器上的安全性。

检查请求标头-如果除了检查表单字段中的输入外,还要检查HTML SQL注入攻击的请求标头,请启用此选项。如果使用GUI,则可以在Web应用程序防火墙配置文件的"高级设置”- >“配置文件设置窗格中启用此参数。

注意:如果启用“检查请求标头”标志,则可能必须为用户代理标头配置放宽规则。SQL关键字和SQL特殊字符分号() 的存在可能会触发误报并阻止包含此标头的请求。警告

如果同时启用请求标头检查和转换,则标头中找到的任何SQL特殊字符也将转换。接受、接受字符集、接受编码、接受语言、期望和用户代理标头通常包含分号 (;)。同时 启用请求标头检查和转换可能会导致错误。

InspectQueryContentTypes-如果要检查特定内容类型的SQL注入攻击的请求查询部分,请配置此选项。如果使用gui,则可以在应用程序防火墙配置文件的高级设置->配置文件设置窗格中配置此参数。

SQL细粒度放宽

Web应用程序防火墙为您提供了免除特定表单字段,标题或饼干的选项,从SQL注入检查检查中免除。通过为SQL注入检查配置放宽规则,可以完全绕过对其中一个或多个字段的检查。

Web应用防火墙允许您通过微调放松规则来实现更严格的安全性。应用程序可能需要灵活性才能允许特定模式,但配置放宽规则以绕过安全检查可能会使应用程序容易受到攻击,因为目标字段不受任何 SQL 攻击模式的检查。SQL 细粒度放宽提供了允许特定模式并阻止其余模式的选项。例如,Web App Firewall 当前具有超过 100 个 SQL 关键字的默认集合。由于黑客可以在 SQL 注入攻击中使用这些关键字,因此 Web App Firewall 将其标记为潜在威胁。您可以放松一个或多个被认为对于特定位置安全的关键字。其余潜在危险的 SQL 关键字仍会检查目标位置,并继续触发安全检查冲突。您现在有更严格的控制。

放宽中使用的命令具有值类型值表达式的可选参数。您可以指定值表达式是正则表达式还是文字字符串。值类型可以留空,或者您可以选择关键字SpecialStringWildChar

警告:

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

需要注意的事项:

  • 值表达式是一个可选参数。字段名称可能没有任何值表达式。
  • 字段名称可以绑定到多个值表达式。
  • 必须为值表达式分配值类型。SQL值类型可以是:1)关键字,2)SpecialString或3)WildChar。
  • 每个字段名称/ url组合可以有多个放宽规则。

使用命令行配置SQL注入检查

使用命令行配置SQL注入操作和其他参数:

在命令行界面中,可以使用设置appfw配置文件命令或添加appfw配置文件命令来配置SQL注入保护。您可以启用阻止,学习,记录,统计数据操作,并指定是否要转换SQL注入攻击字符串中使用的特殊字符以禁用攻击。选择要在有效负载中检测的 SQL 攻击模式的类型(关键字、通配符、特殊字符串),并指示是否希望 Web App Firewall 也检查请求标头是否存在 SQL 注入冲突。使用未设置appfw配置文件命令将配置的设置恢复到默认值。以下每个命令只设置一个参数,但您可以在单个命令中包含多个参数:

  • 设置应用防火墙配置文件“页面底部提供的参数说明。”
  • -SQLInjectionAction (([block] [learn] [log] [stats]) | [none])
  • 设置应用防火墙配置文件“页面底部提供的参数说明。”
  • -SQLInjectionTransformSpecialChars (**ON** | OFF)
  • 设置应用防火墙配置文件“页面底部提供的参数说明。”
  • <名称> - * * SQLInjectionCheckSQLWildChars * * (* * * * | * * * *)
  • 设置应用防火墙配置文件“页面底部提供的参数说明。”
  • * * <名称> - * * SQLInjectionType * * ((* * SQLKeyword * *) |【* * SQLSplChar * *】|【* * SQLSplCharANDKeyword * *】|【* * SQLSplCharORKeyword * *))
  • 设置应用防火墙配置文件“页面底部提供的参数说明。”
  • <名称> - * * SQLInjectionParseComments * * ((* * checkall * *) | (* * ansi |嵌套* *)| (* * ansinested * *))
  • **设置应用防火墙配置文件“页面底部提供的参数说明。”
  • -CheckRequestHeaders (ON | OFF)页面底部提供的参数说明。
  • - CheckRequestQueryNonHtml (ON | OFF)页面底部提供的参数说明。

使用命令界面配置SQL注入放宽规则

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

  • bind appfw profile -SQLInjection [isRegex(REGEX| NOTREGE)] [-location ] [-valueType (Keywor|SpecialString|Wildchar) [][-isValueRegex (REGEX| NOTREGEX)]]

  • unbind appfw profile -SQLInjection [-location ] [-valueTyp(关键字|SpecialString|Wildchar) []]

注意:通过查看包含SQL关键字和SQL特殊字符列表的视图签名对象,可以从默认签名文件内容中找到SQL关键字列表。

使用GUI配置SQL注入安全检查

在GUI中,您可以在窗格中为与应用程序关联的配置文件配置SQL注入安全检查。

使用GUI配置或修改SQL注入检查

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

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

一。如果要为HTML SQL注入启用或禁用阻止,日志,统计信息和学习操作,则可以选中或清除表格中的复选框,单击确定,然后单击保存并关闭以关闭安全检查窗格。

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

转换SQL特殊字符-转换请求中的任何SQL特殊字符。

检查SQL通配符-将负载中的SQL通配符视为攻击模式。

检查包含的请求——要检查的SQL注入类型(SQL关键字,SQLSplchar, SQLSplchor关键字或SQLSplchor关键字)。

SQL注释处理—要检查的注释类型(检查所有注释,ansi,嵌套或ansi /嵌套)。

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

使用GUI配置SQL注入放宽规则

  • 导航到应用程序防火墙>配置文件,突出显示目标配置文件,然后单击编辑
  • 高级设置窗格中,单击放宽规则
  • 在“放宽规则”表中,双击HTML SQL注入项,或将其选中,然后单击”编辑”。
  • HTML SQL注入放宽规则对话框中,执行放宽规则的添加编辑删除启用禁用操作。

注意

添加新规则时,除非在值类型字段中选择关键字SpecialStringWildChar选项,否则不会显示值表达式字段。

使用可视化工具管理SQL注入放宽规则

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

使用GUI查看或自定义注入模式

您可以使用GUI查看或自定义注入模式。

默认SQL模式在默认签名文件中指定。如果没有将任何签名对象绑定到配置文件,则配置文件将使用默认签名对象中指定的默认注入模式进行命令注入安全检查处理。在默认签名对象中指定的规则和模式是只读的。您无法编辑或修改它们。如果要修改或更改这些模式,请复制默认的 ssigNatures 对象以创建用户定义的签名对象。更改新用户定义的签名对象中的命令注入模式,然后在处理要使用这些自定义模式的流量的配置文件中使用此签名对象。

有关详细信息,请参阅签名

要使用GUI查看默认的注入模式,请执行以下操作:

  1. 导航到应用程序防火墙 > 签名,选择* 默认签名,然后单击编辑

查看默认的注入模式

  1. 单击管理cmd / sql / xss模式。”管理sql /跨站点脚本路径"表显示了与cmd / sql / xs注入有关的模式:

查看默认的注入模式

  1. 选择一行并单击管理元素以显示Web应用防火墙命令注入检查使用的相应注入模式(关键字,特殊字符串,转换规则或通配符)。

将学习功能与SQL注入检查结合使用

启用学习操作后,Web应用防火墙学习引擎会监视流量并了解触发的冲突。您可以定期检查这些学习的规则。经过适当考虑,您可以将学习的规则部署为SQL注入放宽规则。

SQL注入学习增强——Citrix ADC软件11.0版中引入了Web应用防火墙学习增强功能。若要部署精细的SQL注入松弛,Web应用防火墙提供精细的SQL注入学习。学习引擎针对观察到的值类型(关键字、SpecialString、Wildchar)和输入字段中观察到的相应值表达式提出建议。除了检查被阻止的请求以确定当前规则是否限制性太强且需要放宽之外,您还可以查看学习引擎生成的规则,以确定哪些值类型和值表达式触发了违规,需要在放宽规则中加以解决。

重要

网站应用防火墙的学习引擎只能区分名称的前128个字节。如果表单具有多个字段,名称与前 128 个字节匹配,则学习引擎可能无法区分它们。同样,部署的放宽规则可能会无意中放宽 SQL 注入检查中的所有这些字段。

注意:要绕过SQL签入用户代理标头,请使用以下放宽规则:

绑定appfw profile your_profile_name -SQLInjection User-Agent " .*" -location头

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

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

  • show appfw learningdata SQLInjection
  • rm appfw learningdata -SQLInjection [] [ ]
  • export appfw learningdata SQLInjection

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

  1. 导航到应用防火墙 > 配置文件,突出显示目标配置文件,然后单击编辑

  2. 在“高级设置“窗格中,单击”学习规则”。您可以选择“已学习规则”表中的HTML SQL注入条目,然后双击该条目以访问已学习的规则。您可以部署已学习的规则或编辑规则,然后再将其部署为放宽规则。要放弃规则,您可以选择该规则并单击过按钮。您一次只能编辑一个规则,但可以选择要部署或跳过的多个规则。

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

将日志功能与SQL注入检查结合使用

启用日志操作时,html SQL注入安全检查冲突将作为APPFW_SQL冲突记录在审核日志中。Web应用防火墙支持本机和CEF日志格式。您也可以将日志发送到远程syslog服务器。

使用命令行访问日志消息

切换到shell并在/var/log/文件夹中尾部ns.log以访问与SQL注入违规有关的日志消息:

>壳

# tail -f /var/log/ns.log | grep APPFW_SQL .log

转换请求时HTML SQL注入日志消息的示例

Jun 26 21:08:41  10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_SQL|6|src=10.217.253.62 geolocation=Unknown spt=54001 method=GET request=http://aaron.stratum8.net/FFC/login.php?login_name=%27+or&passwd=and+%3B&drinking_pref=on&text_area=select+*+from+%5C+%3B&loginButton=ClickToLogin&as_sfid=AAAAAAXjnGN5gLH-hvhTOpIySEIqES7BjFRs5Mq0fwPp-3ZHDi5yWlRWByj0cVbMyy-Ens2vaaiULKOcUri4OD4kbXWwSY5s7I3QkDsrvIgCYMC9BMvBwY2wbNcSqCwk52lfE0k%3D&as_fid=feeec8758b41740eedeeb6b35b85dfd3d5def30cmsg= Special characters seen in fields cn1=74 cn2=762 cs1=pr_ffc cs2=PPE1 cs3=9ztIlf9p1H7p6Xtzn6NMygTv/QM0002 cs4=ALERT cs5=2015 act=transformed 

发布请求被阻止时的HTML SQL注入日志消息的示例

Jun 26 21:30:34  10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_SQL|6|src=10.217.253.62 geolocation=Unknown spt=9459 method=POST request=http://aaron.stratum8.net/FFC/login_post.php msg=SQL关键字check failed for field text_area="(')" cn1=78 cn2=834 cs1=pr_ffc cs2=PPE1 cs3=eVJMMPtZ2XgylGrHjkx3rZLfBCI0002 cs4=ALERT cs5=2015 act=blocked 

注意

作为10.5。E构建(增强版本)和11.0版本之后的流式更改的一部分,我们现在以块形式处理输入数据。RegEx模式匹配现在限制为4K以进行连续字符串匹配。通过此更改,sql冲突日志消息可能包含与早期版本相比不同的信息。输入中的关键字和特殊字符可以用多个字节分隔。我们现在在处理数据时跟踪SQL关键字和特殊字符串,而不是缓冲整个输入值。除了字段名称之外,日志消息现在还包括SQL关键字或SQL特殊字符,或SQL关键字和SQL特殊字符,具体取决于配置的设置。输入的其余部分不再包含在日志消息中,如以下示例所示:

示例:

在10.5中,当Web应用防火墙检测到SQL冲突时,整个输入字符串可能包含在日志消息中,如下所示:

SQL关键字检查失败的字段文本=\"select a name from testbed1;(;)\".*<阻止> . txt

在支持请求端串流和11.0开始构建的10.5。E的增强版本中,我们只记录日志消息中的字段名称,关键字和特殊字符(如果适用),如下所示:

SQL关键字检查字段失败**text="select(;)"< >阻塞

此更改适用于包含应用程序/ x-www-form-urlencoded,多部分/格式或文本/ x-gwt-rpc内容类型的请求。处理JSONXML有效负载期间生成的日志消息不受此更改的影响。

使用GUI访问日志消息

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

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

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

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

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

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

使用"单击以部署"选项部署的SQL注入规则不包括精细粒度放宽建议。

要在GUI中使用“单击部署”功能,请执行以下操作:

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

SQL注入冲突的统计信息

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

使用命令行显示SQL注入检查统计信息

在命令提示符下,键入:

Sh appfw stats

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

> stat appfw profile <配置文件名称>

使用GUI显示HTML SQL注入统计信息

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

重要内容

请注意有关SQL注入检查的以下几点:

  • 内置对SQL注入保护的支持——Citrix Web应用防火墙通过监视窗体参数中SQL的关键字和特殊字符的组合,防止SQL注入。所有SQL关键字,特殊字符,通配符和默认转换规则都在/ netscaler default_custom_settings.xml文件中指定。
  • 义,可以更改默认关键字,特殊字符,通配符和转换规则,以根据应用程序的特定需求自定义SQL安全检查检查。创建默认签名对象的副本、修改现有条目或添加新条目。将此签名对象绑定到您的配置文件以利用自定义配置。
  • 混合安全模型-签名和深度安全防护都使用绑定到配置文件的签名对象中指定的sql /跨站点脚本模式。如果没有签名对象绑定到配置文件,则使用默认签名对象中存在的sql /跨站点脚本模式。
  • 转换-请注意有关转换操作的以下内容:
    • 转换操作独立于其他SQL注入操作设置。如果启用转换并且封锁、日志、统计信息和学习都处于禁用状态,则会转换 SQL 特殊字符。
    • 启用SQL转换后,在非阻止模式下转换SQL特殊字符后,将用户请求发送到后端服务器。如果启用了阻止操作,则该操作优先于转换操作。如果注入类型被指定为 SQL 特殊字符并且块已启用,则尽管执行了转换操作,请求仍会被阻止。
  • 细粒度放松和学习-微调放宽规则,以放松安全检查检查中的一部分SQL元素,但检测其余部分。学习引擎根据观测到的数据推荐特定的值类型和值表达式。
  • 单击以部署-在syslog查看器中选择一条或多条SQL冲突日志消息,并将其作为放宽规则进行部署。