Nashorn / jjs security:在服务器端执行用户脚本

时间:2016-10-21 13:22:35

标签: javascript java security nashorn jjs

我正在编写一个应用程序,用户可以使用nashorn / jjs提供自定义javascript函数来过滤服务器端的文件:

cat /etc/js/library.js user.js > tmp.js && 
cat /path/to/input.txt | jjs --language=es6 -doe -J-Djava.security.manager tmp.js > /path/to/output.txt &&
rm tmp.js

我知道用户可以写一个无限循环来填充我的磁盘:

for(;;) print("#####);

但是-J-Djava.security.manager是否足以阻止他在文件系统上读/写文件?

感谢。

1 个答案:

答案 0 :(得分:2)

你是对的。设置java安全管理器后,您的脚本将被“沙盒化”#34;。除非您编写明确的安全策略,其中您授予特定脚本的特定权限,否则仅为脚本提供沙箱权限。您可以安全地运行不安全的脚本。要授予特定脚本的特定权限,您需要从可信URL加载脚本并在安全策略中使用这些URL:

另请参阅:https://wiki.openjdk.java.net/display/Nashorn/Nashorn+script+security+permissions