私はnashorn使用して、ユーザーがサーバー側でファイルをフィルタリングするjavascript関数のカスタムを提供することができるアプリケーションを書いて、サーバー側でユーザーのスクリプトを実行/ JJS:Nashorn/JJSセキュリティ:
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
のですか?
ありがとうございました。
おかげで、それJJSはまだ読み取ることができ逆説的ではありません:
も参照してください。スクリプトファイル 'tmp.js'? (または、このjsファイルを読み込んだ後でセキュリティが有効になっていますか?) – Pierre
いいえ、jjsコード自体には、デフォルトポリシーでAllPermissionが与えられています。コマンドラインで指定されたファイルの初期セットを読み込むので、一貫しているのはjjsコードです。スクリプトが "load"プリミティブを呼び出してさらにスクリプトをロードする場合、スクリプト(読み込みスクリプト)のセキュリティ権限も有効になります。 –