【问题标题】:Karate Framework as a Rules Engine空手道框架作为规则引擎
【发布时间】:2021-08-11 06:25:19
【问题描述】:

我有一个 api 项目,它需要根据一组规则验证有效负载。为此,我编写了一个空手道功能文件,其中包含传入请求 json 有效负载所需的所有断言。然后特征文件根据满足的条件返回真或假。这种机制目前在我的本地运行良好。

是否建议将此方法用于生产用例?这种格式的空手道框架是否能够在很短的时间内处理大量的请求?

【问题讨论】:

    标签: karate rule-engine


    【解决方案1】:

    这里是空手道的开发者,我真的很喜欢你的问题,因为它验证了我个人的看法,即空手道只是让使用 JSON 变得容易。

    为什么我不建议将其用于生产用途,因为空手道嵌入了一个 JS 引擎,可以使用“脚本注入”攻击来攻击该引擎。空手道专为“本地”运行的用户而设计,没有内置保护措施来防止任何通过 JSON 有效负载进入的恶意攻击。

    另一个问题是性能,我个人非常有信心,因为空手道与加特林一起使用,并且多年来已经进行了一些工作来提高性能。但归根结底,空手道确实在解释模式下使用 JS 引擎。因此,您需要自己运行性能测试或负载测试,以验证空手道是否可以处理您期望的音量。

    也许您可以为空手道做出贡献以解决上述两个问题!

    【讨论】:

    • 非常感谢彼得的回答和贡献。我认为您的回答澄清了我的大部分担忧。对于第一部分,如果我的 API 是使用 Spring 构建的,并且空手道规则是嵌套在一些 Spring 安全措施后面的组件,那么 js 引擎是否仍然容易受到攻击?至于性能,我知道加特林集成,但正如您所说的那样,我将在最后进行任何结论之前对其进行测试。
    • @YashPatil 我认为你是对的,如果有一个弹簧过滤器等应该照顾安全方面。还有一件事,请注意我们最近尝试通过 Java API 提供 JSON 和匹配功能,请参阅此处的文档,下一个 (jbang) 部分中有一个示例:github.com/intuit/karate#java-api
    • 这个链接可以用来提供一些与这个主题相关的反馈吗? github.com/intuit/karate/wiki/How-to-Submit-an-Issue 看到空手道从基于测试自动化的框架扩展到更多内容,这将是非常有趣和有希望的。
    • @YashPatil 不确定你的意思——但也许你需要做的就是首先在 github 上用你的想法创建一个示例项目
    • 当然可以。我将在 GitHub 上放置一个使用空手道的 RuleEngine 方式的示例并分享它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多