regex - XACML 正则表达式不匹配
问题描述
我们有一个包含很多规则的 XACML 文件,我们不想处理所有规则。我们正在尝试添加一个不会适用于所有规则且仅适用于某些规则的 Target 标签。
我们尝试使用正则表达式"abc:def:gh:1234.*"
并希望仅处理与该表达式匹配的属性的规则
但是有这种模式的规则不匹配,我们想匹配这种模式
"abc:def:gh:1234:test"
"abc:def:gh:1234-test"
只有此字符串模式与
"abc:def:gh:1234.Test"
4 之后的任何内容与“。”匹配。正在匹配
我们只需要检查字符串的开头并尝试过
"^abc:def:gh:1234"
我们也尝试过包含
"abc:def:gh:1234"
但没有一个正则表达式有效,非常感谢任何对正则表达式的帮助
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">abc:def:gh:1234.*</AttributeValue>
<AttributeDesignator AttributeId="jpmc:resource:resource-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</Match>
</AllOf>
</AnyOf>
</Target>
解决方案
您应该避免使用正则表达式(通常),尤其是在 XACML 中。XACML 策略旨在易于阅读。尝试使用以下任何功能(alfa表示法):
- 字符串相等
- stringEndsWith
- stringStartsWith
- 字符串包含
或者,您应该处理/规范化策略执行点 (PEP) 或策略信息点 (PIP) 中的值。Axiomatics(我工作的地方)有一个 Groovy PIP,它可以让你做这些事情并保持你的策略干净。
推荐阅读
- c# - 使用 MVVM 模型将树视图和数据网格绑定到数据集
- azure-functions - 如何在 Azure Durable Functions 中保留变量
- python - 如何在正则表达式上匹配冒号后的字符串
- php - 如何在php中使用array_shift函数检查队列中的第一个人
- python - 在python中具有多个反斜杠匹配的正则表达式
- sql - Oracle Sql - 在 IN 语句中包含子查询时,脚本速度极慢
- python - Pandas 按列分组和排序,需要添加逗号分隔的条目
- azure - 用 Azure Functions 替换 Azure API
- javascript - 如何在生成器函数中使用while循环
- audio - 有没有办法附加虚拟音频输入和输出设备