서버 측 샌드 박스 스크립팅에 대한 나의 선택은 무엇입니까? [닫은]


11

사용자가 데이터와 스크립트를 공유하여 일부 데이터를 실행하는 공개 웹 사이트를 만들고 있습니다. 스크립트는이 사이클과 다른 상호 작용없이 일종의 샌드 박스에서 서버 측으로 실행됩니다. Perl 프로그램은 데이터베이스에서 사용자가 작성한 스크립트를 읽고 처리 할 데이터를 스크립트 (예 : JSON 문서)에 추가 한 다음 인터프리터를 호출합니다. 응답 (JSON 문서 또는 일반 텍스트)을 반환합니다. 펄 스크립트로 데이터베이스에 저장합니다. 스크립트는 스크립트 언어에 추가 된 내장 함수에 대한 액세스 권한을 가질 수 있어야합니다.

그래서 나는 node.js를 자바 스크립트 인터프리터로 우연히 발견했으며 몇 시간 전에 Google V8을 사용했습니다 (v8이 이런 종류의 일에 적합합니까?). CoffeeScript는 멋져 보이고 여전히 Javascript이기 때문에 내 마음에 들었습니다.

나는 자바 스크립트가 OS 호출이나 원격으로 안전하지 않은 것을 가지고 있지 않기 때문에 충분히 넓고 더 "샌드 박스 가능"하다고 생각합니다.

그건 그렇고, 나는 프론트 엔드를 위해 Perl과 Php에 시스템을 작성하고 있습니다.

질문을 개선하려면 : node.js로 구현하기에 충분히 안전하고 간단하다고 생각하기 때문에 Javascript를 선택하고 있습니다. 그러나이 종류의 작업을 수행하기위한 다른 대안은 무엇입니까? 루아? 파이썬? 샌드 박스 인터프리터를 올바른 방법으로 실행하는 방법에 대한 정보를 찾을 수 없습니다.


무엇을 요구하는지 명확하지 않습니다. 가능합니까? 물론 가능합니다.
Robert Harvey

답변:


3

Java에는 내장 JavaScript 인터프리터가 포함되어 있습니다. 기본적으로 샌드 박스는 아니지만 다음을 통해 활성화 할 수 있습니다.

  • 올바른 클래스 셔터 설정-JavaScript는 일반적으로 Java 클래스를로드 할 수 있습니다. 클래스 셔터는로드 할 수있는 클래스와로드 할 수없는 클래스를 결정하는 일종의 보안 관리자입니다.
  • "스타트 업"스크립트-외부 시스템에 대한 액세스 포인트를 삭제하는 짧은 JavaScript 초기화 : java = undefined;Packages = undefined;org = undefined;

이렇게하면 내부에서 실행되는 스크립트가 외부 환경에 액세스 할 수 없어야합니다.

또한 샌드 박싱에 유용한 스크립트 시간 제한 및 명령어 수 제한 기능을 제공합니다. 스크립트의 길이 또는 복잡성을 제한 할 수 있습니다.

Rhino JavaScript 엔진이있는 Java 7에서 이것을 사용했습니다. Java 8에는 더 최신의 최신 엔진 Nashorn이 있습니다. Nashorn으로 시도하지는 않았지만 비슷해야합니다.


블랙리스트가 아니라 화이트리스트에 올릴 수 있습니까?
Petah

@Petah, 먼저 모든 것을 비활성화 (블랙리스트) 한 다음 객체 형태의 특정 기능을 샌드 박스에 푸시 할 수 있습니다. 이것은 본질적으로 화이트리스트입니다. 그렇습니다. 그렇게 할 수 있습니다.
qbd 10

JavaScript 지식은 스크립팅 언어로 선택하기에 충분할 정도로 널리 퍼져 있습니다. 통화에 대한 액세스를 제한하고 있으므로 일부 글로벌 및 사용자에 대한 통화를 정의 할 수 있습니다. 브라우저가 window상호 작용을 가능하게하기 위해 JavaScript 변수를 정의하는 방법을 생각하십시오 .
Michael Shopsin

2

내 첫 번째 생각은 node.js-위에서 언급했듯이 javascript-interpreter입니다. 정말 안전한 방법으로 스크립트를 샌드 박스로 만들려면 정확히 필요한 것입니다.

또 다른 방법은 스크립트의 모든 명령이 유효한지 여부를 확인하는 것입니다. 그러나 나는 당신이 안전한 샌드 박스를 얻을 것이라고 생각하지 않습니다.

인사말


샌드 박싱 지원 i NodeJS가 있거나 NodeJS와 함께 사용할 수 있습니까?
ysdx

4
이것을 발견 : gf3.github.com/sandbox
ysdx

"NODE.JS를위한 멋진 JAVASCRIPT SANDBOX"링크로 연결되는 +1
잭 스톤

참고 : gf3 샌드 박스가 손상 될 수 있습니다.
Petah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.