학생들이 파이썬 코드 솔루션을 간단한 파이썬 문제로 제출할 수있게하고 싶습니다. 내 응용 프로그램은 GAE에서 실행됩니다. 어떻게하면 sumicios 코드에서 위험을 제한 할 수 있습니까? 나는 이것이 어려운 문제임을 깨닫고 관련된 Stackoverflow와 그 주제에 대한 다른 글들을 읽었습니다. GAE 환경에서 제한 사항을 적용하면 신뢰할 수없는 코드가 가할 수있는 손상을 제한하는 것이 더 간단 해지는지 궁금합니다. 제출 된 코드에서 몇 가지 제한된 키워드 (exec, import 등)를 검사 한 다음 코드가 고정 된 시간보다 오래 실행되는지 확인하거나 신뢰할 수없는 코드를 샌드 박스로 저장하기가 여전히 어려운지 확인하십시오. 복원 된 GAE 환경? 예를 들면 :GAE의 Python에서 신뢰할 수없는 코드를 실행할 위험을 최소화하는 가장 좋은 방법은 무엇입니까?
# Import and execute untrusted code in GAE
untrustedCode = """#Untrusted code from students."""
class TestSpace(object):pass
testspace = TestSpace()
try:
#Check the untrusted code somehow and throw and exception.
except:
print "Code attempted to import or access network"
try:
# exec code in a new namespace (Thanks Alex Martelli)
# limit runtime somehow
exec untrustedCode in vars(testspace)
except:
print "Code took more than x seconds to run"
학생들은 [위험한 코드 제출]을하지 않을 것입니다 :-) – mjv