필자는 천천히 프론트 엔드로 extjs를 사용하는 게임과 같은 webmud를 실행하기 위해 인력 프로젝트를 수행했습니다. 내가 선택한 디자인 중 하나는 사용자가 생성 한 게임 로직에 대한 평가 코드를 허용하는 것입니다. 그래서 플레이어가 새로운 "방"에 입장 할 때 많은 수의 상태 스크립트가 "이전에 여기에 있었는지 플레이어가 여기 있습니까? x 개의 인벤토리 아이템을 가지고 있습니까?"라는 라인을 따라 호출 한 다음 이에 따라 응답합니다. 또한 기본 작업 "작업"은 하드 코드 (N/S/E/W로 이동)되지만 고급 작업은 동일한 사용자 생성 평가 스크립트로 사용할 수 있습니다.PHP5 또는 대안 내에서 샌드 박싱을위한 권장 사항은 무엇입니까?
원래 나는 게으르므로이 논리에 대해 PHP를 평가했지만 내 편집증 감각이 발휘되고 있습니다. 그래서 내가 찾은 두 가지 대안은 runkit_sandbox이지만 주 노드 사이의 객체 교환을 지원하지 않습니다 스레드 및 샌드 박스 (간단한 데이터 형식 및 배열) 또는 ecmascript를 내 게임 논리로 사용 http://ejohn.org/blog/spicing-up-embedded-javascript/.
두 가지 장점/단점은 runkit을 사용하면 속도를 높이기 위해 엄청난 비용이 들지만 스크립트를 잠글 수 있다는 것입니다. 반면에 ecma 인터프리터는 변수, 함수 및 가능한 객체를 javascript에 선택적으로 바인딩 할 수 있습니다 아직 베타 상태에 있지만 아직 실행 방법을 잘 알지 못했습니다.
옵션을위한 것입니까? 아니면 거기에 더 좋은 선택이 될 수 있는지 모르겠습니다. 환경 : linux, PHP-CGI 5.3 또는 Google 응용 프로그램 엔진.
. PHPParser 라이브러리를 사용하여 샌드 박스 코드를 분석하고 사용자가 구성 할 수있는 화이트리스트 및 블랙리스트와 비교하여 확인하며 정상적인 기본 설정과 함께 다양한 구성 옵션을 제공합니다. 이 프로젝트에는 샌드 박스 설정을 실험하는 데 사용할 수있는 샌드 박스 툴킷 (로컬 컴퓨터에서만 사용)과 전체 설명서 및 API 설명서가 포함되어 있습니다. https://github.com/fieryprophet/php-sandbox –