2014-05-11 3 views
0

문자열로 저장되는 사용자 정의 계산을 허용해야합니다. 수식은 변수를 실제 값으로 대체하여 실행하기 전에 동적으로 구문 분석됩니다.사용자 정의 계산을 안전하게 평가하십시오.

같은 맥락에서 동일한 고객 계정에 속한 사람들 만 잠재적으로 서로에게 악성 코드를 삽입 할 수 있습니다. 동료를 공격하는 불량 직원. 내가 생각할 수있는

예 (I 더있다 확신) :

"{x} * {y} * function() {...}()" 
"{x} * {y} * eval(...)" 

// replace variables 

eval("above input strings") 

는 지금이 확보하는 방법에 대한 아이디어를 찾고 있어요. eval()을 처음 실행할 때 위험을 줄이거 나 복잡한 파서를 작성할 필요가없는 대안이 필요한 이유는 무엇입니까?

+0

을가 브라우저에서 실행되는 오프라인 웹 응용 프로그램의뿐만 아니라 포장으로 아파치 코르도바. http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/을 지금 시도하고 있습니다. –

+0

또는 서버 측 문자열 필터링 옵션이 있습니다. –

+0

단순히 계산을 서버 측에서 처리 할 수 ​​없습니까? – SilverlightFox

답변

0

제 3 자에 의해 작성된 신뢰할 수없는 자바 스크립트를 실행해야하는 비슷한 문제가 발생했습니다. 웹 객체를 단순하게 사용하려면 WebWorker를 사용할 수 있습니다. WebWorker는 window과 같은 전역 변수에 액세스 할 수없는 별도의 스레드를 생성합니다.

참고 : WebWorker에는 HTML5가 필요합니다. 주요 자바 스크립트 파일에 다음

self.onmessage = function(e) { 
    postMessage(eval(e.data)); 
}; 

:

는 "worker.js"파일을 만들고이 경우

var worker = new Worker('worker.js'); 
worker.onmessage = function(e) { 
    alert('The answer is ' + e.data); 
    worker.terminate(); // to free up the resources 
}; 
var my_already_parsed_function = '3+5+6'; 
worker.postMessage(my_already_parsed_function); 
+1

[OWASP는 권장하지 않습니다.] (https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Web_Workers) :'웹 근로자는 호출 페이지의 DOM에 액세스 할 수 없지만 악의적 인 웹 작업자는 계산에 과도한 CPU가 발생하여 서비스 거부 상태가되거나 악용 될 가능성이 있습니다. 모든 웹 작업자 스크립트의 코드가 악의적이지 않은지 확인하십시오. 사용자가 입력 한대로 웹 워커 스크립트를 만들 수 없도록하십시오. ' – SilverlightFox

+0

DoS는 플래시 공격이나 암호 차단과 비교할 때 내 관심사가 아닙니다. CORS 학대가 웹 노동자 내부에서 할 수있는 일을 모릅니다. –

+1

@Besrl : 웹 사이트에서 다른 도메인과 대화 할 수있는 권한이있는 경우 XSS 대상으로 실행될 때이 신뢰를 악용 할 수 있습니다. – SilverlightFox

관련 문제