如何创建 AWS WAF 规则以防止 SQLi 和 XSS?
我想防止 SQL 注入 (SQLi) 和跨站脚本攻击(XSS)。AWS WAF 提供哪些选项来防止 SQLi 和 XSS 攻击?
简短描述
AWS WAF 提供以下保护措施来防止 SQLi 和 XSS 攻击:
- 内置 SQLi 和 XSS 引擎
- AWS 托管规则可用于 SQLi 和 XSS 注入攻击
要配置这些保护,请确保您已设置 AWS WAF 并创建了 Web ACL。
**注意:**AWS WAF 在检查正文、标头或 Cookie 请求组件时存在限制。有关更多信息,请参阅请求正文、标头和 Cookie 的检查。
解决方法
**重要提示:**最佳做法是在 Action(操作)设置为 Count(计数)的情况下在非生产环境中测试规则。使用 Amazon CloudWatch 指标与 AWS WAF 采样请求或 AWS WAF 日志相结合,评估规则。如果您对规则执行您想要的操作感到满意,请将 Action(操作)更改为 Block(阻止)。
使用内置的 SQLi 和 XSS 引擎
攻击可以在 HTTP 请求的不同部分执行,例如 HTTP 标头、查询字符串或 URI。配置 AWS WAF 规则以根据内置缓解引擎检查 HTTP 请求的不同部分。
SQLi 攻击规则语句
创建 SQL 注入攻击规则语句以检查恶意 SQL 代码。要创建 SQLi 攻击规则语句,请执行以下操作:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
**注意:**如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。 - 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 对于 Name(名称),输入 rule name(规则名称),然后选择 Regular Rule(常规规则)。
- 对于 If a request(如果是请求),选择 matches the statement(与语句匹配)。
- 对于 Inspect(检查),选择 Request components(请求组件)以根据 SQLi 内置缓解引擎进行评估。
- 对于 Match Type(匹配类型),从下拉列表中选择Contains SQL injection attacks(包含 SQL 注入攻击)。
- 选择 Text transformation(文本转换)。
- 对于 Action(操作),选择 Block(阻止)。
- 选择 Add Rule(添加规则)。
- 选择 Save(保存)。
XSS 攻击规则语句
创建跨站脚本攻击规则语句以检查 Web 请求组件中的恶意脚本。要创建 XSS 攻击规则语句,请执行以下操作:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
**注意:**如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。 - 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 对于 Name(名称),输入 rule name(规则名称),然后选择 Regular Rule(常规规则)。
- 对于 If a request(如果是请求),选择 matches the statement(与语句匹配)。
- 对于 Inspect(检查),选择 Request components(请求组件)以根据 XSS 内置缓解引擎进行评估。
- 对于 Match Type(匹配类型),从下拉列表中选择 Contains XSS injection attacks(包含 XSS 注入攻击)。
- 选择 Text transformation(文本转换)。
- 对于 Action(操作),选择 Block(阻止)。
- 选择 Add Rule(添加规则)。
- 选择 Save(保存)。
针对多个请求组件进行评估的 SQLi 和 XSS 攻击规则
要创建针对多个请求组件进行评估的攻击规则,请执行以下操作:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
**注意:**如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。 - 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 对于 Name(名称),输入 rule name(规则名称),然后选择 Regular Rule(常规规则)。
- 对于 If a request(如果是请求),选择matches at least one of the statements (OR)(至少匹配其中一个语句(OR))。
- 对于 Inspect(检查),选择 Request components(请求组件)以根据 SQLi 或 XSS 内置缓解引擎进行评估。
- 对于 Match Type(匹配类型),从下拉列表中选择 Contains SQLi injection attacks(包含 SQLi 注入攻击)或 Contains XSS injection attacks(包含 XSS 注入攻击)。
- 选择 Text transformation(文本转换)。
- 对每个Statement(语句)重复步骤 8 到 10。选择 Add another statement(添加其他语句)以进行其他规则评估。
- 对于 Action(操作),选择 Block(阻止)。
- 选择 Add Rule(添加规则)。
- 选择 Save(保存)。
重要信息:您必须应用正确的文本转换才能使规则按预期工作。例如,如果您正在检查 Cookie,请使用以下与 Cookie 关联的转换:
- 网址解码
- HTML 实体解码
- 小写
使用可用于 SQLi 和 XSS 注入攻击的 AWS 托管规则
使用适用于 AWS WAF 的 AWS 托管规则来防止应用程序漏洞或其他不需要的流量,而无需编写您自己的规则。
**注意:**托管规则受版本更改和过期限制。有关更多信息,请参阅处理托管规则组版本的最佳实践。
使用 SQL 数据库托管规则组来防范 SQL 注入攻击。SQL 数据库托管规则组(默认版本 1.1)具有以下提供保护的规则:
- SQLiExtendedPatterns_QUERYARGUMENTS
- SQLi_QUERYARGUMENTS
- SQLi_Body
- SQLi_COOKIE
- SQLi_URIPATH
使用核心规则集 (CRS) 托管规则组来防范 XSS 注入攻击。核心规则集 (CRS) 托管规则组(默认版本 1.3)具有以下提供保护的规则:
- CrossSiteScripting_COOKIE
- CrossSiteScripting_QUERYARGUMENTS
- CrossSiteScripting_BODY
- CrossSiteScripting_URIPATH
将 AWS 托管规则组添加到您的 Web ACL
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
**注意:**如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。 - 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add managed rule groups(添加托管规则组)。
- 展开 AWS managed rule groups(AWS 托管规则组)部分。
- 找到规则组并打开 Add to web ACL(添加到 Web ACL)。
例如,您可以为用于 SQLi 保护的 SQL database(SQL 数据库)和用于 XSS 保护的 Core rule set(Core 规则集)启用 Add to web ACL(添加到 Web ACL)。 - (可选)选择 Edit(编辑)以查看和修改规则组的设置。
- 选择 Add rules(添加规则)。
- 选择 Save(保存)。
要编辑 Web ACL 中的现有 AWS 托管规则组
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
**注意:**如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。 - 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Edit(编辑)以查看和修改设置。
**注意:**有关编辑设置的更多信息,请参阅使用托管规则组。 - 完成编辑后,选择 Save(保存)。
如果您在使用 AWS 托管规则组时遇到误报情况,请参阅适用于 AWS WAF 的 AWS 托管规则。
相关内容
- AWS 官方已更新 9 个月前
- AWS 官方已更新 4 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前