NetScaler

HTML SQL注入检查

许多web应用程序都有使用SQL与关系数据库服务器通信的web表单。恶意代码或黑客可以使用不安全的web表单向web服务器发送SQL命令。应用程序防火墙HTML SQL注入检查提供了特殊的防御,防止注入未经授权的SQL代码,这可能会破坏安全性。如果应用防火墙在用户请求中检测到未经授权的SQL代码,它要么转换请求,使SQL代码不活跃,要么阻止请求。应用程序防火墙在三个位置检查注入SQL代码的请求有效负载:1)POST主体,2)标头和3)cookie。为了检查请求中注入的SQL代码的查询部分,无论内容类型如何,请启用appfw配置文件设置“检查请求查询非HTML”。

默认的关键字和特殊字符集提供了常用的SQL攻击的已知关键字和特殊字符。您可以添加新的模式,也可以编辑默认设置来定制SQL检查检查。应用程序防火墙为实现SQL注入保护提供了各种操作选项。除了日志统计数据学习操作时,应用防火墙配置文件还提供了以下选项转换SQL特殊字符使攻击无害

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

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

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

-如果启用block,则只有在输入符合SQL注入类型规范时才触发block动作。例如,如果SQLSplCharANDKeyword如果配置为SQL注入类型,则即使在输入中检测到SQL特殊字符,也不会阻止不包含关键字的请求。如果将SQL注入类型设置为任意一种,则会阻止此类请求SQLSplChar,或SQLSplCharORKeyword

日志—如果启用了日志特性,SQL Injection检查将生成日志消息,显示它所执行的操作。如果block被禁用,则会为检测到SQL违规的每个输入字段生成单独的日志消息。但是,当请求被阻塞时,只生成一条消息。类似地,对于转换操作,即使在多个字段中转换SQL特殊字符,也会为每个请求生成一条日志消息。您可以监视日志以确定对合法请求的响应是否被阻止。日志消息数量的大量增加可能表明有人试图发起攻击。

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

学习-如果你不确定哪些SQL松弛规则可能最适合你的应用程序,你可以使用学习功能来生成基于学习数据的建议。App Firewall学习引擎监视流量,并根据观察到的值提供SQL学习建议。为了在不影响性能的情况下获得最佳收益,您可能希望在短时间内启用学习选项,以获得规则的代表性样本,然后部署规则并禁用学习。

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

转换操作通过对请求进行以下更改来使SQL代码不活动:

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

这三个字符(特殊字符串)是向SQL服务器发出命令所必需的。除非SQL命令以特殊字符串开头,否则大多数SQL服务器都会忽略该命令。因此,应用程序防火墙在启用转换时执行的更改可以防止攻击者注入活动SQL。完成这些更改后,请求可以安全地转发到受保护的网站。当您受保护的网站上的web表单可以合法地包含SQL特殊字符串,但web表单不依赖于特殊字符串来正确操作时,您可以禁用阻止并启用转换以防止阻止合法的web表单数据,而不会减少应用程序防火墙提供给您受保护的网站的保护。

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

提示

您通常启用转换或阻塞,但不是两者都启用。如果块操作被启用,它优先于转换操作。如果您启用了阻塞,那么启用转换是多余的。

检查SQL通配符通配符可以用来扩大结构化查询语言(SQL-SELECT)语句的选择范围。这些通配符操作符可以与就像不喜欢将一个值与相似的值进行比较的操作符。百分比(%)和下划线(_)字符经常用作通配符。百分号类似于MS-DOS中使用的星号(*)通配符,用于匹配字段中的零个、一个或多个字符。下划线类似于MS-DOS的问号(?)通配符。它匹配表达式中的单个数字或字符。

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

SELECT * from customer WHERE name like“%D%”

下面的示例将这两个运算符组合在一起,以查找任何第二位和第三位都为0的工资值。

SELECT * from customer WHERE salary like ' _00% '

不同的DBMS供应商通过添加额外的操作符扩展了通配符。NetScaler App应用防火墙可以防止通过注入这些通配符发起的攻击。默认的5个通配符是百分比(%)、下划线(_)、插入符号(^)、左方括号([)和右方括号(])。这种保护适用于HTML和XML配置文件。

属性中指定的字面值列表*默认签名

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

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

请注意

SQL通配符检查与SQL特殊字符检查不同。必须谨慎使用此选项,以避免误报。

检查包含SQL注入类型的请求-应用程序防火墙提供4个选项,以实现SQL注入检查所需的严格程度,基于应用程序的个人需要。根据注入类型规范检查请求,以检测SQL违规。4种SQL注入类型选项是:

  • SQL特殊字符和关键字-输入中必须同时存在SQL关键字和SQL特殊字符以触发SQL冲突。这个限制最少的设置也是默认设置。
  • SQL特殊字符-至少一个特殊字符必须出现在输入中触发SQL冲突。
  • SQL关键词-输入中必须至少有一个指定的SQL关键字来触发SQL违规。未经适当考虑,请勿选择此选项。为了避免误报,请确保输入中没有期望的关键字。
  • SQL特殊字符或关键字-输入中必须存在关键字或特殊字符串以触发安全检查违规。

提示

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

SQL注释处理-默认情况下,应用程序防火墙检查所有SQL注释注入SQL命令。但是,许多SQL服务器忽略注释中的任何内容,即使前面有SQL特殊字符。为了更快地处理,如果你的SQL服务器忽略注释,你可以配置应用防火墙,在检查注入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上,否则不应该选择Nested或ANSI/Nested选项。大多数其他类型的SQL server软件不识别嵌套注释。如果在指向另一种SQL服务器的请求中出现嵌套注释,则可能表明有人企图破坏该服务器的安全性。

检查请求头-启用此选项,除了检查表单字段中的输入,如果你想检查请求头的HTML SQL注入攻击。如果您使用GUI,则可以在高级设置->配置文件设置面板中的应用程序防火墙配置文件。

注意:

如果启用Check Request标头标志,则可能必须为用户代理头。存在SQL关键字就像和SQL特殊字符分号()可能会触发误报并阻止包含此标头的请求。警告:

如果同时启用请求标头检查和转换,那么在标头中找到的任何SQL特殊字符也会被转换。Accept、Accept- charset、Accept- encoding、Accept- language、Expect和User-Agent报头通常包含分号(;)。同时启用请求报头检查和转换可能会导致错误。

检查请求查询非HTML-如果您想检查请求查询部分的SQL注入攻击,无论内容类型如何,请启用此选项。如果您使用GUI,您可以在应用防火墙配置文件的“高级设置->配置文件设置”窗格中启用该参数。

SQL细粒度松弛

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

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

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

警告:

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

考虑要点:

  • 值表达式是一个可选参数。字段名可能没有任何值表达式。
  • 一个字段名可以绑定到多个值表达式。
  • 应该为值表达式分配值类型。SQL值类型可以是:1)Keyword, 2) SpecialString,或3)WildChar。
  • 每个字段名/URL组合可以有多个松弛规则。

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

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

在命令行界面中,您可以使用设置appfw配置文件命令或添加appfw配置文件命令,配置SQL注入防护。您可以启用阻断、学习、记录、统计动作,并指定是否要转换SQL注入攻击字符串中使用的特殊字符以阻止攻击。选择你想要在有效负载中检测的SQL攻击模式类型(关键字、通配符、特殊字符串),并指示你是否希望应用防火墙也检查SQL注入违规的请求头。使用取消appfw配置文件设置命令将已配置的设置还原为默认设置。以下命令只设置一个参数,但可以在一个命令中包含多个参数:

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

使用命令行配置SQL注入松弛规则

使用bind或unbind命令添加或删除绑定,具体如下:

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

  • unbind appfw profile -SQLInjection [-location ] [- valueyp (Keyword|SpecialString|Wildchar) []]

注意:

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

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

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

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

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

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

  1. 如果您只想启用或禁用HTML SQL注入的“阻断”、“日志”、“统计”和“学习”操作,您可以选中或清除表中的复选框,单击好吧,然后点击保存关闭关闭安全检查窗格。

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

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

检查SQL通配符-考虑负载中的SQL通配符是攻击模式。

检查请求包含要检查的SQL注入类型(SQLKeyword、SQLSplChar、SQLSplCharANDKeyword、SQLSplCharORKeyword)。

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

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

  1. 启用或禁用检查请求头设置后,在“高级设置”窗格中单击配置文件设置。在常见的设置,选择或清除检查请求头复选框。点击好的。您可以使用配置文件设置窗格右上角的X图标来关闭此部分,或者,如果您已经完成了配置该配置文件,您可以单击完成回到应用防火墙>配置文件

  2. 启用或禁用检查请求查询非HTML设置,在高级设置窗格中,单击配置文件设置。在常见的设置,选择或清除检查请求头复选框。点击好吧。的右上角的X图标配置文件设置窗格关闭此部分,或者,如果您已完成配置此配置文件,您可以单击完成回到应用防火墙>配置文件

使用GUI配置SQL注入松弛规则

  • 导航到应用防火墙>配置文件,突出显示目标概要文件,然后单击编辑
  • 高级设置窗格中,单击放松规则
  • 在“松弛规则”表中,双击HTML SQL注入条目,或者选择它并单击编辑
  • HTML SQL注入放松规则对话框,执行添加编辑删除启用,或禁用松弛规则的运算。

请注意

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

通过使用可视化工具来管理SQL注入放松规则

对于所有松弛规则的统一视图,您可以突出显示HTML SQL注入行并单击视觉型的人。部署松弛的可视化工具为您提供以下选项添加新规则或编辑一个已经存在的。你也可以启用禁用通过选择一个节点并单击松弛可视化器中的相应按钮来生成一组规则。

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

您可以使用GUI来查看或定制SQL模式。

中指定了默认SQL模式应用Firewall >签名>默认的签名。如果没有将任何签名对象绑定到配置文件,则配置文件将使用default Signatures对象中指定的默认SQL模式进行SQL注入安全检查处理。在默认签名对象中指定的规则和模式是只读的。您不能编辑或修改它们。如果需要修改或更改这些模式,请复制“默认签名”对象,以创建“自定义签名”对象。对新的用户定义签名对象中的SQL模式进行更改,并在您的配置文件中使用此签名对象,该配置文件正在处理您希望使用这些自定义SQL模式的流量。

有关更多信息,请参见签名

1.查看默认SQL模式:

1.导航到**应用防火墙>签名**,选择***默认签名**,然后单击**编辑**。然后单击**管理SQL/XSS模式**。

管理SQL/XSS路径表中显示了与SQL注入相关的四行:

—Injection (not_alphanum, SQL)/ Keyword—Injection (not_alphanum, SQL)/ specialstring—Injection (not_alphanum, SQL)/ transformrules/transform—Injection (not_alphanum, SQL)/ wildchar选择一行,单击“**管理元素**”,显示App Firewall SQL注入检查使用的相应SQL模式(关键字、特殊字符串、转换规则或通配符)。

自定义SQL模式:通过编辑自定义签名对象,可以自定义SQL关键字、特殊字符串和通配符。您可以添加新条目或删除现有条目。您可以修改SQL特殊字符串的转换规则。

  1. 导航到应用防火墙>签名,选中目标自定义签名,单击编辑。点击管理SQL/XSS模式要显示管理SQL/XSS路径表格

  2. 选择目标SQL注入行。

    我点击。管理元素,添加编辑删除对应的SQL元素。

    2点击删除以删除选定的行。

警告:

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

使用Learn特性和SQL注入检查

启用学习动作后,应用防火墙学习引擎对流量进行监控,并学习触发的违规行为。你可以定期检查这些学到的规则。经过适当的考虑,您可以将学习到的规则部署为SQL Injection松弛规则。

SQL注入学习增强-在NetScaler软件的11.0版本中引入了应用程序防火墙学习增强功能。为了部署细粒度的SQL注入放松,应用防火墙提供了细粒度的SQL注入学习。学习引擎根据在输入字段中观察到的Value Type(关键字、SpecialString、Wildchar)和相应的Value表达式给出建议。除了检查被阻止的请求以确定当前规则是否过于严格,需要放松之外,您还可以查看学习引擎生成的规则,以确定哪些值类型和值表达式触发了违规,需要在放松规则中解决。

重要的是:

App Firewall的学习引擎只能区分名字的前128个字节。如果表单有多个字段,其名称匹配前128字节,则学习引擎可能无法区分它们。类似地,部署的松弛规则可能无意中从SQL Injection检查中放松所有这些字段。请注意要绕过User-Agent头中的SQL检查,请使用以下放松规则:

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

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

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

  • 显示appfw learningdata SQLInjection
  • rm appfw learningdata -SQLInjection [] [ ]
  • 导出appfw learningdata SQLInjection

通过使用GUI查看或使用学习到的数据

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

  2. 高级设置窗格中,单击学习规则。你可以选择HTML SQL注入项,并双击它以访问学习到的规则。您可以部署学到的规则,或者在将其部署为松弛规则之前编辑规则。要放弃一条规则,您可以选中它,然后单击跳过按钮。一次只能编辑一条规则,但可以选择部署或跳过多条规则。

您还可以选择显示学习松弛的摘要视图HTML SQL注入在已学习规则表中输入,然后单击视觉型的人以获得所有已知违规行为的综合视图。可视化工具使管理学习的规则变得非常容易。它在一个屏幕上显示了数据的全面视图,并便于一次单击对一组规则进行操作。可视化工具的最大优点是它推荐正则表达式来合并多个规则。您可以根据分隔符和Action URL选择这些规则的一个子集。通过从下拉列表中选择数字,您可以在可视化工具中显示25、50或75条规则。学习规则的可视化工具提供了编辑规则和将其部署为松弛规则的选项。或者你可以跳过规则,忽略它们。

使用SQL注入检查的日志特性

启用日志操作后,HTML SQL Injection安全检查违规将在审计日志中记录为APPFW_SQL违规。应用程序防火墙支持原生和CEF日志格式。您也可以将日志发送到远端syslog服务器。

通过命令行访问日志消息

切换到shell并跟踪ns。登录/var/log/文件夹来访问与SQL注入违规有关的日志消息:

>壳

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

转换请求时的HTML SQL Injection日志消息示例。

june 26 21:08:41 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|APPFW_SQL|6|src=10.217.253.62地理位置=未知spt=54001方法=GETrequest=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 - hvhtopiyseiqes7bjfrs5mq0fwp - 3zhrwbyj0cvbmyy - ens2vaaiulkocuri4od4kbxwwsy5s7i3qkdsrvigcymc9bmvbwy2wbncsqcwk52lfe0k %3D&as_fid\=feeec8758b41740eedeeb6b35b85dfd3d5def30c msg=字段中看到的特殊字符cn1=74 cn2=762 cs1=pr_ffc cs2=PPE1 cs3=9ztIlf9p1H7p6Xtzn6NMygTv/QM0002 cs4=ALERT cs5=2015行动=转换

post请求被阻止时的HTML SQL Injection日志消息示例

6月26日21:30:34 10.217.31.98 CEF:0|Citrix|NetScaler|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关键字检查字段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中,当应用防火墙检测到SQL违规时,整个输入字符串可能会包含在日志消息中,如下所示:

SQL关键字检查字段text=\"select a name from testbed1;(;)\".*

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

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

此更改适用于包含application/x-www-form-urlencoded、multipart/form-data或text/x-gwt-rpc内容类型的请求。的处理过程中产生的日志消息JSONXML有效载荷不受此更改的影响。

通过GUI访问日志消息

NetScaler GUI包含一个有用的工具(Syslog查看器),以分析日志消息。您有多个选项来访问Syslog查看器:

  • 导航到应用防火墙>配置文件,选择目标配置文件,单击安全检查。突出了HTML SQL注入行并单击日志。当您直接从概要文件的HTML SQL Injection检查中访问日志时,GUI会过滤掉日志消息,只显示与这些安全检查违规有关的日志。
  • 您还可以通过导航到来访问Syslog查看器NetScaler>系统>审计。在审计信息节,单击Syslog消息链接显示Syslog查看器,其中显示所有日志消息,包括其他安全检查违规日志。当请求处理期间可能触发多个安全检查违规时,这对于调试非常有用。
  • 导航到应用防火墙>政策>审计。在Audit Messages部分中,单击Syslog消息链接显示Syslog查看器,其中显示所有日志消息,包括其他安全检查违规日志。

基于HTML的Syslog Viewer提供了各种筛选选项,用于仅选择您感兴趣的日志消息。的日志消息HTML SQL注入检查,筛选按选择APPFW的下拉选项中模块。的事件类型列表提供了丰富的选项集,以进一步完善您的选择。例如,如果选择APPFW_SQL复选框,然后单击应用按钮,只记录与SQL注入安全检查违规将出现在Syslog查看器中。

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

单击部署功能仅在GUI中可用。您不仅可以使用Syslog查看器查看日志,还可以根据应用防火墙安全检查违规的日志消息部署HTML SQL注入放松规则。此操作的日志消息必须为CEF日志格式。单击部署功能仅对由块(或非块)操作生成的日志消息可用。不能为关于转换操作的日志消息部署松弛规则。

若要从Syslog查看器部署松弛规则,请选择日志消息。选中行的“Syslog查看器”框右上角会出现复选框。选中复选框,然后从“操作”列表中选择一个选项来部署松弛规则。编辑和部署部署,部署所有均可作为行动选项。

使用Click to Deploy选项部署的SQL注入规则不包括细粒度松弛建议。

在GUI中使用单击部署功能

  1. 在“Syslog查看器”中选择应用防火墙模块选项。
  2. 选择APP_SQL随着事件类型过滤相应的日志信息。
  3. 选择复选框以标识要部署的规则。
  4. 使用行动部署松弛规则的选项下拉列表。
  5. 验证该规则是否出现在相应的松弛规则部分中。

SQL注入违规的统计信息

当启用stats操作时,当应用防火墙对此安全检查采取任何操作时,SQL注入检查的计数器将增加。统计“流量”、“违规”和“日志”的“速率”和“总数”。日志计数器增量的大小可以根据配置的设置而变化。例如,如果阻塞操作被启用,对包含3个SQL注入违规的页面的请求将使统计计数器增加1,因为一旦检测到第一个违规,该页面就会被阻塞。但是,如果禁用block,处理相同的请求将使违规统计计数器和日志增加3,因为每个违规都会生成单独的日志消息。

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

在命令提示符下,输入:

Sh appfw stats

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

> stat appfw profile

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

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

突出了

关于SQL注入检查,请注意以下几点:

  • 内置支持SQL注入保护NetScaler App应用防火墙通过监视SQL关键字和表单参数中的特殊字符的组合来防止SQL注入。所有SQL关键字、特殊字符、通配符和默认转换规则都在/netscaler/default_custom_settings.xml文件中指定。
  • 定制-您可以更改默认关键字、特殊字符、通配符和转换规则,以根据应用程序的特定需求定制SQL安全检查检查。复制默认签名对象、修改现有条目或添加新条目。将此签名对象绑定到配置文件以使用自定义配置。
  • 混合安全模型-签名和深度安全保护都使用绑定到配置文件的签名对象中指定的SQL/XSS模式。如果没有将签名对象绑定到配置文件,则使用默认签名对象中提供的SQL/XSS模式。
  • 变换-注意以下关于转换操作:
    • 转换操作独立于其他SQL Injection操作设置而工作。如果transform被启用并且block、log、stats和learn都被禁用,SQL特殊字符将被转换。
    • 当启用SQL Transformation时,在非块模式下转换SQL特殊字符后,将用户请求发送到后端服务器。如果块操作被启用,它优先于转换操作。如果注入类型指定为SQL特殊字符并且启用了块,则尽管执行了转换操作,请求仍将被阻塞。
  • 细粒度放松和学习-微调松弛规则,从安全检查检查中放松SQL元素的子集,但检测其余部分。学习引擎根据观察到的数据推荐特定的值类型和值表达式。
  • 单击部署-在syslog查看器中选择一个或多个SQL违规日志消息,并将其部署为放松规则。