2012-07-24 49 views
2

我正在使用PyV8運行不受信任的javascript。我如何檢測並殺死那些有inifinite或長時間運行的循環的javascript?我想告訴v8運行javascript,如果它沒有在0.1秒內完成,則會以超時失敗。如何防止V8中的惡意JavaScript(使用Python)

+6

第1步:解決停機問題 – copy 2012-07-24 18:36:34

+1

步驟2:證明NP = P(或者乾脆使用超時,而不是試圖在運行代碼之前確定它) – ThiefMaster 2012-07-24 18:42:11

+0

步驟3: ... – 2012-07-24 18:45:08

回答

3

如果是蟒蛇,你可以使用中斷牛:

from interruptingcow import timeout 

try: 
    with timeout(5, exception=RuntimeError): 
     # perform a potentially very slow operation 
     pass 
except RuntimeError: 
    print "didn't finish within 5 seconds" 

https://bitbucket.org/evzijst/interruptingcow

+0

在Windows上做這項工作? - 文檔提到了SIGALRM,我不認爲它們可以在Windows上使用。 – mgilson 2012-07-24 18:39:17

+0

需要更多「MOOOOOO!」 – jbabey 2012-07-24 18:47:37