2012-01-09 4 views
1

나는 텍스트 영역에 코드를 넣고 교육 목적으로 실행할 수있는 가능성을 제공하고자한다고 가정합니다. > 코드가 서버에 의해 처리된다 - - 예를 들어 사용자사용자가 웹 사이트를 안전하게 루비 스크립트를 실행

그가 양식 제출 print "hello"

로 입력 채우고> 사용자

결과보고하지만 같은 것을 방지 할 :

  • 조작 파일 시스템
  • 도스 공격 for 포크
  • 웹에서의 요청입니다.
  • ...

이 루비 인터프리터는 일부 기본 기능에만 제한되어야합니다.

가능합니까?

+0

연결된 질문/답변에서 언급했듯이 Ruby에서이 작업을 수행하는 방법은 안전 메소드 만 있고 해당 객체의 컨텍스트에서 사용자 명령을 실행하는 객체를 만드는 것입니다. – coreyward

+0

네, 당신이 옳을 것입니다. 닫는 질문 – dfens

+0

오, 정확히는 - 당신은 전화 할 수 있습니다 : 수면 (10) – dfens

답변

-1

나는 통역사의 한계에 대해 잘 모르고 있지만, 제출하기 전에 구문 분석 입력이 필요하다고 생각하고, system("rm -rf ~")과 같은 것이 있으면 인터프리터에 보내고 경고와 함께 리디렉션하지 마십시오.

0

JRuby (http://jruby.org/) 구현을 사용할 수 있다고 생각합니다. JVM 보안 정책 기능을 사용하여 샌드 박스를 만들 수 있습니다. 이 경우 사용자 입력에 대해 걱정할 필요가 없습니다. JRuby에서 실행중인 스크립트는 보안 설정에 의해 제한됩니다.

관련 문제