首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GCP Cloud Armor规则的匹配中使用RE2表达式

在GCP Cloud Armor规则的匹配中使用RE2表达式
EN

Stack Overflow用户
提问于 2021-08-11 12:44:54
回答 1查看 251关注 0票数 1

您好,我正在尝试在Cloud Armor安全策略中设置一个规则,以阻止主机设置为IP地址的请求。这应该是相当直接的,除非我只是在尝试应用规则时在web控制台中得到一个错误。

下面是自定义规则的RE2代码:

代码语言:javascript
复制
!has(request.headers["Host"]) ||
request.headers["Host"] == "" ||
request.headers["Host"].matches('(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)')

我们获得主机头,然后对主机头字符串使用.matches()。正则表达式是相当标准的东西,但我不明白为什么控制台会因为这种错误消息而犹豫不决:

代码语言:javascript
复制
1:34: token recognition error at: ''(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'
3:82: extraneous input '3' expecting {'}', ',', IDENTIFIER}
3:84: mismatched input '(' expecting {<EOF>, 'in', '==', '!=', '<', '<=', '>=', '>', '&&', '||', '[', '{', '.', '-', '?', '+', '*', '/', '%%'}
3:28: token recognition error at: '|2'
3:40: token recognition error at: '|['
3:58: token recognition error at: '')'
3:81: expected a qualified name
3:81: undeclared reference to '*error*' (in container '')
1:1: ERROR: Cloud Armor rule matcher expression:1:33: token recognition error at: ''(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'

我一直在使用docs here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 13:30:38

嗯,看起来我不得不在.之前对\进行双重转义。

因此,自定义规则现在是:

代码语言:javascript
复制
!has(request.headers["Host"]) ||
request.headers["Host"] == "" ||
request.headers["Host"].matches('(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68742305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档