gpt4 book ai didi

regex - 当 XACML 谈到 "regexp-match"时,它指的是哪个正则表达式规则?

转载 作者:行者123 更新时间:2023-12-02 01:32:53 26 4
gpt4 key购买 nike

我在正则表达式上花费了很多时间,我认为这些正则表达式简明准确地表示了我想要允许的资源 URI 和操作字符串范围,但它对每个看似有效的匹配都返回拒绝。我还没有看到一个有用的、真实世界(与 hello-world 相对)的 XACML 正则表达式示例,而且我已经看到的许多示例甚至都没有转义 IP 地址中的点!

正则表达式在不同的上下文中有不同的含义,这就是为什么 Perl 正则表达式被这样称呼的原因。通用术语“正则表达式”的使用没有告诉我任何信息,就像我看到的许多 XACML 示例没有告诉我任何可以扩展的信息一样。

我是否错过了一组明确的规则或字符串正则表达式匹配和/或任何 URI 正则表达式匹配的想象力来源?

感谢您容忍我的咆哮。

顺便说一句,我发现没有针对 XACML 的解析器仅针对缺少的 DTD 发出警告并继续解析真实错误。

最后一个问题:从 build.gradle 中摘录的这个依赖项中是否有任何内容可能会阻止正则表达式匹配,即使是像我看到的 XACML 文档中的一些软弱和头脑简单的东西?

compile group: 'org.herasaf', name:"xacml-core", version: 'latest.integration'

最佳答案

一个问题中有这么多问题。我建议你把它分开。另外,你的问题很宽泛。不是高质量答案的最佳格式,但这里是。

1。为什么在 XACML 中使用正则表达式匹配函数?

实际上您说对了:使用 XACML 编写良好的基于​​属性的访问控制策略可能不应该使用正则表达式。当用于做出决策的属性值未规范化时,您通常会使用正则表达式。例如,假设您想将电话号码与北卡罗来纳州罗利市(区号 919)匹配。您将使用正则表达式(或者可能更简单地使用 stringIsIn)。但实际上,您应该做的要么是给定电话号码返回区号的函数,要么 - 甚至更好的是 - 给定电话号码返回其所属城镇的策略信息。

我为 Axiomatics 客户编写了很多策略,我唯一必须使用正则表达式匹配的情况是数据脏且未规范化时。

反对使用 regexp-match 的另一个论据是它使策略更难理解。你想保持简单,例如

A person can view a medical record if they own the record or if therecord is owned by a dependent.

这是有意义的和人类可读的。正则表达式不是。

在同一类别中,您可以添加属性选择器,XACML 中的此功能可以定义 XPath 表达式以从 XML 内容中提取信息。

2。 XACML 解析器

根据定义,XACML 解析器是仅验证文档结构的 XML 解析器。这就是 XML 解析的工作原理。这就是 DTD(或 XSD)的工作原理。如果您使用无效值,您将不会收到警告。例如在 XACML 中,如果您使用伪造的数据类型,例如bla:fake:NotBoolean,那么针对 XACML 模式的纯 XML 解析器就不会报错。

您需要实现额外的逻辑。我很确定 SunXACML 引擎会给你这个。或者,Axiomatics 引擎会。它会提示存在未知的数据类型,组合算法或函数。

无论如何,没有一个解析器会告诉您该策略是否有意义。如果你写了一个目标说 a>1 AND a<1(这永远不会发生),解析器不会告诉你有一个无效的表达式。从它的角度来看,它并不无效。

如果我没记错的话,HerasAF 已经很老了。我会尝试以下任何一项:

  • SunXACML(Java/开源/未积极维护),所有实现之母
  • ATT XACML 引擎(Java/开源/新)由 AT&T 编写的新实现
  • Axiomatics Policy Server(Java 和 .Net/闭源 - 商业/活跃)ABAC 和 XACML 的商业解决方案(免责声明:我在那里工作)。

关于regex - 当 XACML 谈到 "regexp-match"时,它指的是哪个正则表达式规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33131489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com