Citrix ADC

开始URL检查

开始URL检查检查传入请求中的URL,并在URL不符合指定条件时阻止连接尝试。要满足条件,URL必须与“开始URL”列表中的条目匹配,除非启用了“强制URL关闭”参数。如果启用此参数,则单击网站上链接的用户将连接到该链接的目标。

Start URL检查的主要目的是防止重复尝试访问一个网站上的随机URL,通过书签、外部链接,或通过手动输入URL跳转到页面,跳过访问该网站的部分所需的页面。强力浏览可用于触发缓冲区溢出、查找用户不打算直接访问的内容,或查找进入Web服务器安全区域的后门。Web应用防火墙通过只允许访问被配置为起始URL的URL来强制执行网站给定的遍历或逻辑路径。

如果您使用向导或GUI,在“修改开始URL检查”对话框中,在“常规”选项卡上,您可以启用或禁用阻断、日志、统计、学习动作和以下参数:

  • 强制URL关闭。允许用户通过单击网站上任何其他页面上的超链接来访问网站上的任何网页。用户可以通过单击超链接导航到您网站上的任何页面,这些页面可以从主页或任何指定的起始页访问。注意:URL闭包特性允许将任何查询字符串附加到使用HTTP GET方法提交的web表单的操作URL中并与之一起发送。如果受保护的网站使用表单访问SQL数据库,请确保启用并正确配置了SQL注入检查。
  • 无会话URL闭包。从客户机的角度来看,这种类型的URL闭包的功能与标准的、会话感知的URL闭包完全相同,但是使用嵌入URL中的令牌而不是cookie来跟踪用户的活动,这会消耗更少的资源。启用无会话URL关闭后,Web应用程序防火墙会将“as_URL_id”标记附加到URL关闭中的所有URL。请注意:当启用无会话URL闭包时,还必须启用常规URL闭包(强制URL闭包),否则无会话URL闭包不起作用。
  • 验证Referer头。验证请求中的Referer头包含来自受保护网站而不是其他网站的web表单数据。此操作验证您的网站(而不是外部攻击者)是web表单的来源。这样做可以防止跨站请求伪造(CSRF),而不需要表单标签,这比头检查更占用cpu。Web应用防火墙可以通过以下四种方式之一来处理HTTP Referer报头,这取决于你在下拉列表中选择的选项:
    • -不要验证Referer头。
    • 如有-如果存在Referer标头,请验证Referer标头。如果发现无效的Referer头,请求将生成Referer头冲突。如果不存在Referer标头,则请求不会生成Referer标头冲突。此选项使Web App防火墙能够对包含Referer标头的请求执行Referer标头验证,但不会阻止来自浏览器未设置Referer标头或使用Web代理或过滤器删除该标头的用户的请求。
    • 总是不包括起始url-始终验证Referer头。如果没有Referer标头,并且请求的URL不受startURL松弛规则的豁免,则请求将生成Referer标头冲突。如果Referer头存在但无效,则请求将生成Referer头冲突。
    • 总是除了第一个请求-始终验证引用头。如果没有引用头,则只允许首先访问的URL。没有有效的引用头,所有其他URL将被阻塞。如果Referer报头存在,但它是无效的,则请求生成一个Referer报头违规。

一次启动URL设置,免除关闭URL的安全检查,不是在“修改启动URL检查”对话框中配置的,而是在配置文件的“设置”选项卡中配置的。如果启用,该设置将指示Web应用程序防火墙不再对符合URL关闭条件的URL进行基于表单的检查(如跨站脚本和SQL注入检查)。

请注意

尽管引用头检查和启动URL安全检查共享相同的操作设置,但有可能违反引用头检查而不违反启动URL检查。区别可以从日志中看到,日志引用头检查违规和启动URL检查违规是分开的。

Referer header设置(OFF, if-Present, AlwaysExceptStartURLs,和AlwaysExceptFirstRequest)按照最不严格到最严格的顺序排列,工作如下:

关:

  • 未选中Referer标头。

如果存在:

  • 请求没有referer头->允许请求。
  • 请求有引用头和引用URL在URL闭包->请求是允许的。
  • 请求有引用头,引用URL是在URL闭包->请求被阻止。

AlwaysExceptStartURLs:

  • 请求没有引用头和请求URL是一个开始URL ->请求是允许的。
  • 请求没有referer标头,请求URL不是开始URL->请求被阻止。
  • 请求有引用头和引用URL在URL闭包->请求是允许的。
  • 请求有引用头,引用URL是在URL闭包->请求被阻止。

AlwaysExceptFirstRequest:

  • 请求没有referer头,是会话的第一个请求URL->允许请求。
  • 请求没有referer头并且是会话->请求的第一个请求URL被阻止。
  • 请求具有referer头,并且是会话的第一个请求URL,或者位于URL闭包中->允许请求。
  • 请求具有referer头,既不是会话的第一个请求URL,也不在URL闭包中->请求被阻止。

如果使用命令行界面,则可以输入以下命令来配置开始URL检查:

  • 设置appfw profile -startURLAction [block] [learn] [log] [stats] [none]
  • 设置appfw配置文件-开始关闭([ON]|[OFF])
  • 设置appfw profile-sessionlessURLClosure([ON]|[OFF])
  • 设置appfw配置文件-从安全检查中豁免CLOSURLSFROMSecurityChecks([ON]|[OFF]
  • 设置appfw profile-RefererHeaderCheck([OFF]|[if present]|[AlwaysCeptStartUrls]|[AlwaysCeptFirstRequest])

要为开始URL检查指定松弛,必须使用GUI。在“修改开始URL检查”对话框的“检查”选项卡上,单击“添加”以打开“添加开始URL检查松弛”对话框,或选择现有松弛并单击“打开”以打开“修改开始URL检查松弛”对话框。任何一个对话框都提供了相同的选项配置松弛。

以下是启动URL检查放松的例子:

  • 允许用户访问www.example.com上的主页:

    ^ http://www[。][示例。com $ < !——NeedCopy >
  • 允许用户访问www.example.com上的所有静态HTML(.htm和.HTML)、服务器解析HTML(.htp和.shtml)、PHP(.PHP)和Microsoft ASP(.ASP)格式网页:

    ^http://www[.]示例[.]com/([0-9A-Za-z][0-9A-Za-z_-]*/)*[0-9A-Za-z][0-9A-Za-z.-]*[.](asp | htp | php | s?html?$<--需要复制-->
  • 在www.example-español.com允许用户访问包含非ascii字符的路径名或文件名:

    ^http://www(0-9A-A-Fa-f[0-9A-A-f-f-f-f-0-9A-A-Fa-f][0-9A-A-Fa-f][0-9A-A-Fa-f[0-9A-A-AZ-z-z-f[0-9A-9A-A-A-A-A-A-A-A-A-A-Za-Za-z-f][[0-9A-A-A-f-f-f[0-A-A-A-A-f-f-f-f][-A-f-A-f[0-A-A-A-A-f-A-Fa-f][-f-f-f-f-f-f-f-f-f[0-A-A-A-f-f-A-f-f-f-f-A-f-f-f-f-A-f-f-f-f-f-f-f!--需要复制-->

    请注意在上面的表达式中,每个字符类都与字符串x[0-9A-Fa-f][0-9A-Fa-f]组合在一起,它匹配所有正确构造的字符编码字符串,但不允许与UTF-8字符编码字符串相关联的杂散反斜杠字符。双反斜杠()是一个转义的反斜杠,它告诉Web应用防火墙将它解释为一个字面反斜杠。如果只包含一个反斜杠,Web应用防火墙将把下面的左方括号([)解释为一个文字字符,而不是字符类的开头,这将破坏表达式。

  • 允许用户访问www.example.com上的所有GIF(.GIF)、JPEG(.jpg和.JPEG)和PNG(.PNG)格式的图形:

    ^http://www[.]示例[.]com/([0-9A-Za-z][0-9A-Za-z_-]*/)*[0-9A-Za-z][0-9A-Za-z.-]*[.](gif | jpe?g | png)$<--需要复制-->
  • 允许用户访问CGI (.cgi)和PERL (.pl)脚本,但只能在CGI- bin目录下:

    ^ http://www[][]例子com/CGI-BIN/ [0-9A-Za-z] [0-9A-Za-z_. -] * [] (cgi | pl) $ < !——NeedCopy >
  • 允许用户访问docsarchive目录下的Microsoft Office和其他文档文件:

    ^ http://www[][]例子com/docsarchive/ [0-9A-Za-z] [0-9A-Za-z_ -。]* [](doc | xls | pdf | ppt) $ < !——NeedCopy >

请注意

默认情况下,所有Web应用防火墙URL都被视为正则表达式。

注意:正则表达式功能强大。特别是如果您不完全熟悉PCRE格式的正则表达式,请仔细检查您编写的任何正则表达式。确保它们准确地定义了要作为例外添加的URL,而不是其他内容。不小心使用通配符,尤其是点-星号(.*)元字符/通配符组合,可能会产生您不想要的结果,例如阻止访问您不想阻止的web内容,或者允许攻击,否则启动URL检查将阻止该攻击。

提示

你可以添加- - - - - - -指向URL命名方案允许的SQL关键字列表。比如说比如说,https://FQDN/bread-and-butter

开始URL检查