2011-08-23 5 views
5

사용자가 다른 언어로 코드를 제출할 수있는 시스템 (예 : one)이 있으며 시스템에서 해당 언어로 테스트 사례를 컴파일하고 실행합니다. 개발자로서, 나는 그들이 어떻게 이것을하는지, 어떻게 다국어 (PHP, Python, C, .NET, javascript)를 지원하는지 궁금하다.코드를 동적으로 컴파일하고 실행하는 방법은 무엇입니까?

제출 된 코드가 악의적이어서 코드를 실행하는 환경이 위험해질 수 있습니까?

감사합니다.

답변

0

나는 특정 사이트를 말할 수는 없지만 대개는 sandbox이라는 제한된 환경을 만듭니다. 이 환경 내에서 그들은 기능의 가용성을 거기에서 실행되는 프로그램으로 더 제한 할 수 있습니다. 이는 언어 내에서 특정 API 호출을 차단하여 수행 할 수도 있습니다.

Chroot on * nix는 샌드 박스를 만드는 한 가지 방법입니다.

+0

Windows 환경에서 샌드 박스를 만드는 방법이 있습니까? – Nick

+0

내 머리 위로 버추얼 박스 또는 VM웨어와 같은 가상 머신 솔루션을 생각해 볼 수 있습니다. Google이 샌드 박스 + 윈도우의 첫 번째 링크로 이것을 발견했습니다 - http://downloadsquad.switched.com/2009/03/11/five -sandboxing-apps-to-protect-your-windows-computer / – arunkumar

3

궁금한 점이있어 그들이 어떻게하는지, 어떻게 여러 언어 (PHP, Python, C, .NET, javascript)를 지원하는지 알고 싶습니다.

단순 : 여러 언어 설치가 설치되어 있고 주어진 입력에 대해 올바른 언어를 호출하십시오 (당연히 사용자가 제공함).

제출 된 코드가 악의적이어서 코드를 실행하는 환경이 위험해질 수 있습니까?

예, 물론입니다. 그러나 수많은 잠재적 인 대응책이 있습니다. 여러 해 동안 개발 된 다양한 형태의 프로세스를 샌드 박싱하고 주어진 시간이 지나면 프로세스가 종료되고 잠재적으로 위험한 기능에 대한 액세스가 차단됩니다.을 참조하십시오.

관련 문제