2009-08-08 6 views
2

사람들이 자바 소스 코드 (간단한 클래스)를 제출하는 웹 페이지가 있다고 가정합니다. 내 서버에서 코드를 컴파일하고 실행하려고하지만 당연히 사람들이 내 서버에 해를 끼치 지 않도록하려면 java.io.* 및 다른 기능/라이브러리를 어떻게 사용할 수 없게합니까?Java에서 라이브러리를 비활성화 하시겠습니까?

소스 코드에서 regexp는 한 가지 방법 일 수 있지만 javac 또는 java에 인수를 전달할 수있는 경우 "더 좋을 것"입니다.

(하나는 하나의 클래스를 구현하는 AI 경쟁 또는 무언가를 만들 때 유용 할 수 있지만, 나는 자바 환경 훼손 방지합니다.)

답변

2

의도에 따라 javabat.com을 실행하는 Nick Parlante와 이야기 할 수도 있습니다. 설명하는 것과 거의 똑같습니다. 나는 그가 자신의 해결책을 기꺼이 공유 할 의향이 있는지는 모르겠다. 그러나 그는 당신에게 어떤 구체적인 도움을 줄 수있을 것이다.

+0

이 경우 사용자는 매우 제한적입니다. IIRC에서는 수입 명세서를 전혀 사용할 수 없습니다. 따라서 그의 솔루션은 매우 간단 할 수도 있지만 분명히 알아내는 것이 중요합니다. – MatrixFrog

2

제 조언은 그렇게하지 않습니다. 을 기꺼이 수행하고 해킹당한 서버를 실행하는 시스템의 결과를 수락하려면을 준비하지 않은 이상 적어도하지 마십시오. 그리고 아마 같은 네트워크에있는 다른 기계 일 수도 있습니다.

+0

Java는 @ Matt의 답변에 따라이 보안 수준을 제공 할 수 있다고 가정합니다. 따라서 수행중인 작업을 알면 매우 합법적 인 작업입니다. –

+1

그러나 당신이하는 일을 알지 못하면 ...하지 마십시오. 그리고 만약 당신이 잘못한 결과를 가지고 살 준비가되어 있지 않다면 ...하지 마십시오. –

0

Google App Engine은 클래스가 흰색 인 접근 방식을 사용합니다. 즉,로드되지 않았거나 클래스 자체가 변경되어 라이브러리가 다시 컴파일되어 IO 또는 다른 시스템 호출을 수행 할 수 없습니다. 아마도 http://jikesrvm.org/과 같은 jvm을 다시 컴파일하면됩니다.

0

언제든지 사용자 정의 클래스 로더에서 코드를 실행할 수 있습니다. 이렇게하면로드하기 위해 수락 할 내용을 완전히 제어 할 수 있습니다.

관련 문제