gpt4 book ai didi

java - 安全地将包导出到 Java 模块

转载 作者:搜寻专家 更新时间:2023-10-31 19:59:43 25 4
gpt4 key购买 nike

我在回答 this问题,我建议使用 exports to 语法来防止外部使用者访问旨在供模块之间内部使用的代码。

但进一步思考,模块实现的唯一真正的安全检查是它与名称匹配。考虑这个我正在实现两个模块的例子:

module a {
exports unsafe to b
}

module b {
requires a
}

unsafe 包包含公开的不安全代码。有什么方法可以安全地将其导出到内部模块而不将它们暴露在外部?

在上面的示例中,流氓实体可以简单地将其模块命名为 b 并获得对代码的访问权限(不安全)。 JLS似乎没有说明任何可以阻止它发生的事情。

最佳答案

模块散列为pointed by Alan应适用于您的情况。尽管我个人喜欢 JMOD tool 中的描述和示例这直接回答了你的问题:

With the --hash-modules option or the jmod hash command, you can, ineach module's descriptor, record hashes of the content of the modulesthat are allowed to depend upon it, thus "tying" together thesemodules.

This lets you to allow a package to be exported to one ormore specifically-named modules and to no others through qualifiedexports. The runtime verifies if the recorded hash of a module matchesthe one resolved at run time; if not, the runtime returns an error.

关于java - 安全地将包导出到 Java 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749641/

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