这篇文章已经过机器翻译.放弃
JSON 跨站点脚本编写保护检查
如果传入的 JSON 负载包含恶意跨站脚本编写数据,WAF 会阻止该请求。以下过程说明了如何通过 CLI 和 GUI 界面进行配置。
配置 JSON 跨站点脚本编写保护
要配置 JSON 跨站脚本编写保护,必须完成以下步骤:
- 将应用程序防火墙配置文件添加为 JSON。
- 配置 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)
配置 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
使用 GUI 配置 JSON 跨站点脚本编写(跨站点脚本编写)保护
请按照以下步骤设置跨站点脚本编写(跨站点脚本编写)保护设置。
- 在导航窗格上,导航到“安全”>“配置文件”。
- 在配置文件页面中,单击添加。
- 在 NetScaler Web App Firewall 配置文件页面中,单击“高级设置”下的“安全检查”。
- 在“安全检查”部分,转到 JSON 跨站点脚本编写(跨站点脚本编写) 设置。
- 单击复选框旁边的可执行文件图标。
- 单击操作设置以访问 JSON 跨站点脚本编写设置页面。
- 选择 JSON 跨站脚本编写操作。
- 单击确定。
- 在 NetScaler Web App Firewall 配置文件 页面中,单击 高级设置 下的 放宽规则。
- 在“放宽规则”部分中,选择“JSON 跨站点脚本编写设置”,然后单击“编辑”。
- 在 JSON 跨站点脚本编写放宽规则页面中,单击添加以添加 JSON 跨站点脚本编写放宽规则。
- 输入请求必须发送到的 URL。发送到此 URL 的所有请求都不会被阻止。
- 单击创建。
为基于 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>
示例:
bind appfw profile appprofile1 -jsonxssurl www.example.com -key name -isRegex NOTREGEX -valueType Tag “sname” -isvalueRegex NOTREGEX
使用 GUI 配置基于 JSON 的跨站点脚本编写 (XSS) 注入细粒度放松规则
- 导航到 应用程序防火墙 > 配置文件,选择一个配置文件,然后单击 编辑。
- 在“高级设置”窗格中,单击“放宽规则”。
- 在“宽松规则”部分中,选择 JSON SQL 注入记录,然后单击“编辑”。
- 在“JSON 跨站点脚本编写放宽规则”滑块中,单击“添加”。
-
在 JSON 跨站点脚本编写放宽规则 页面中,设置以下参数。
- 已启用
- 是名字正则表达式
- 注册表项名称
- URL
- 值类型
- 注意
- 资源 ID
- 单击创建。