2014-06-07 5 views
2

플러그인을 실행할 수있는 응용 프로그램을 만들고 있습니다. 이제는 플러그인을 설치 환경의 파일에만 액세스 할 수 있도록 샌드 박스로 만들려고합니다. 구성 설정 (예 : 'define'변수로 정의 된 데이터베이스 비밀번호)에 액세스 할 수 있습니다.샌드 박스 PHP Phar 파일

phar 플러그인을 샌드 박스에 사용하려면 어떻게해야합니까?

답변

1

응용 프로그램에 샌드 박스 기능을 추가하는 세 가지 기본 방법이 있습니다.

  1. 새로운 PHP 프로세스 실행 환경을 사용하고 OS의 보안 메커니즘을 사용하여 샌드 박스를 만듭니다. 응용 프로그램 프로세스와 샌드 박스 프로세스 간의 통신은 일부 네트워크 프로토콜을 사용합니다 (OS 샌드 박싱은 IPC 및/또는 파이프 통신을 제한하므로). 예를 들면 chroot 환경이나 zeromq 등의 docker가 있습니다.

  2. 새로운 PHP 프로세스와 PHP 확장을 사용하여 포함 및 네트워크 기능 제한과 같은 보안 기능을 사용할 수 있습니다. 예를 들어, suhosin, suPHP, (그보다 적은 정도는) forking 및 exec()가 있습니다.

  3. 플러그인 코드를 실행하기 전후에 보안 기능을 활성화 한 다음 비활성화하려면 기존 응용 프로그램 프로세스와 PHP 확장을 사용하십시오. 예를 들면 수호신이

제 3 옵션이 솔루션은 아직 쉬운 약한 것 같다 포함하기 때문에 당신은 아마 끌 수있는 악의적 인 플러그인을 수호신으로 켤 수 아무것도.

환경 변수 허용 안 함, 포함 경로 제한, 네트워크 연결 제한 및 데이터베이스 연결 제한 등 솔루션의 복잡성과 원하는 기능의 우선 순위를 고려하여 샌드 박스 요구 사항을 나열해야합니다.

응용 프로그램의 새 프로세스에서 이미 PHAR 파일을 실행하고있는 것 같습니다. "exec ('php ./plugin.phar')와 같은 일을하는 경우 주 응용 프로그램이 루트로 실행되지 않는 한 사용자를 변경하는 것으로 제한됩니다. 외부 phar 플러그인을 실행하는 동안 사용자를 전환하기 위해 루트로 계속 실행중인 exec 유틸리티를 사용하는 일종의 플러그인 관리자 프로세스가있을 수 있지만 FS 액세스가 제한되지는 않습니다.