Java 응용 프로그램에서 JRuby를 사용하여 사용자가 스크립트를 실행할 수 있도록합니다. 응용 프로그램의 정상적인 기능에 필요한 일련의 작업은 그리 크지 않습니다. 스크립트는 Java 코드의 일부 변수를 제어하고 실행 중에 프로세스를 변경해야합니다.Java 응용 프로그램에서 허용되는 JRuby 명령을 제한 할 수 있습니까?
그래서 허용 된 작업 수를 제한하고 싶습니다. 예를 들어, 사용자가 파일 시스템에 액세스하지 못하도록하고 싶습니다.
f = File.new("myfile.txt", "w")
f.puts("Hello!")
f.close
이것은 금지되어야합니다.
어떻게 이러한 설정을 수행 할 수 있습니까? 내가 가지고있는 유일한 아이디어는 실행 전에 사용자 스크립트를 구문 분석하고 허용 된 작업의 흰색 목록과 스크립트를 비교하는 것입니다.
표준'SecurityManager'로는 충분하지 않을 수 있습니다 (예 : 리소스 사용의 경우 특히 클라이언트 스크립트가 JRE를 무한 루프로 보내는 경우). 이러한 추가주의 사항은 좋은 의미입니다. –
화이트리스트의 아이디어는 훌륭합니다! 이 특정 사례에서 "화이트리스트"가 의미하는 것은 몇 가지 팁이나 URL을 알려주시겠습니까? JRuby의 지원되는 기능으로 수행 할 수 있습니까? 또는 스크립트를 텍스트 구문 분석 수준에서 직접 구현해야합니까? 나는 라이 (Rye)에 대한 화이트리스트의 예를 발견했다. 그것은 JRuby (https://github.com/delano/rye/blob/master/lib/rye/cmd.rb)에 대해 이와 같은 것을 가지고 greate 것입니다 고마워요! – Anton
@Anton 기본 예제로 업데이트했습니다. – Woot4Moo