gpt4 book ai didi

scala - 防止在 Scala 中导入未经授权的类

转载 作者:行者123 更新时间:2023-12-01 23:59:06 24 4
gpt4 key购买 nike

我正在开发一个允许用户执行自定义 Scala 代码的在线环境(可以将其视为持续集成)。但是,我想阻止他们做某些事情,最明显的是文件 I/O 和网络调用。我将使用我将公开的库允许这些函数的有限形式。

天真的方法是简单地将 /^import.*$/ 替换为空字符串。然而,不法之徒有很多方法可以绕过这个问题,比如使用类加载器等。我希望用户只能访问预先选择的导入“白名单”,而不必依赖(可能不完整的)黑名单。

我还没有决定是要在底层操作系统上用他们的文件调用 scalac,还是使用 IMain 来解释文本。显然,如果一种方法使我想要的结果可行,我就会选择那种方法。 奖励积分如果您的回答包括方法

我怎样才能有效地沙箱我的用户代码?

最佳答案

有两个不同的问题:编译时沙盒和运行时沙盒。

运行时沙盒可以通过使用 Java 安全和类加载器限制来实现 - 参见例如How do I create a Java sandbox?而且,更谨慎的是,Can I trust Java SecurityManager sandbox? .关于这个主题还有很多内容!

对于 Scala 编译时沙盒,我不得不推迟。但是,我想知道你是否需要它。如果唯一尝试使用禁止 API 的人是那些试图闯入您的系统的人,那么没有理由通过提供编译时检查来简化他们的工作。

关于scala - 防止在 Scala 中导入未经授权的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308355/

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