在鼓励使用特殊字符的密码等字段的 REST API 中,避免 WAF 误报的最佳编码实践是啥

Posted

技术标签:

【中文标题】在鼓励使用特殊字符的密码等字段的 REST API 中,避免 WAF 误报的最佳编码实践是啥【英文标题】:In a REST API on a field like a password where special characters are encouraged what is the best-practice for encoding to avoid WAF false-positives在鼓励使用特殊字符的密码等字段的 REST API 中,避免 WAF 误报的最佳编码实践是什么 【发布时间】:2021-10-22 03:11:37 【问题描述】:

我有一个使用 JSON 数据的 REST API。监控流量的 Web-Application-Firewall (WAF) 使用标准的 OWASP 规则。一条规则是阻止包含插入符号的密码。

例如leA^n12

我可以对密码进行 base64 编码,但我想知道是否有 JSON API 数据流经 WAF 的最佳实践?

【问题讨论】:

【参考方案1】:

OWASP 规则集被设计成非常严格的开箱即用,并经过调整以适应使用 WAF 的应用程序或组织的特定需求。创建排除、自定义规则,甚至禁用可能导致问题或误报的规则是完全正常的,并且在许多情况下实际上是预期的。

WAF 排除列表允许您在 WAF 评估中省略某些请求属性。一个常见示例是用于身份验证或密码字段的 Active Directory 插入令牌。此类属性容易包含可能触发 WAF 规则误报的特殊字符。将属性添加到 WAF 排除列表后,任何已配置且处于活动状态的 WAF 规则都不会考虑该属性。排除列表的范围是全局的。

您可以通过创建排除列表或禁用规则来修复误报。

参考: https://docs.microsoft.com/en-us/azure/web-application-firewall/ag/application-gateway-waf-configuration#waf-exclusion-lists

【讨论】:

以上是关于在鼓励使用特殊字符的密码等字段的 REST API 中,避免 WAF 误报的最佳编码实践是啥的主要内容,如果未能解决你的问题,请参考以下文章

通过 REST API 验证/更改密码

允许在 Web API 参数中使用特殊字符

django登录注册验证之密码包含特殊字符,确认密码一致实现

Azure DevOps REST API - 选项列表如何与字段关联?

shell脚本中怎样对特殊字符进行处理 一串密码在加密前对密码中的!@#$%等特殊字符进行处理(加上‘’)。

在 Djoser 和 Rest Framework 中使用自定义字段注册用户