2017-11-04 6 views
0

내 사용자 정의 인터프리터 용 웹 REPL을 만들고 싶습니다. 내 아이디어를 탐구하자. 사용자가 브라우저에서 코드를 작성한 후 "평가"버튼을 클릭하면 OK 코드가 ajax를 통해 서버로 전송되면 코드는 JS로 작성된 linter와 유효성 검사기 (유효성 검사기와 linter가 별도의 모듈로 작성 됨)를 거칩니다. 그런 다음 서버 별 환경에서 해당 코드 평가를 위해 작성됩니다. 그 코드를 평가 한 결과는 다시 broswer에게 돌아갑니다. 그래서 내가 모르는 것은 방법과 클라이언트 코드 평가를위한 별도의 환경을 만드는 도구에 관한 것입니다. 맞다면 제 질문은 클라이언트 코드를 안전하게 실행하기 위해 서버에서 무엇을해야합니까? 나는 메인 OS와는 별도로 추측한다. 도커가 도와 줄 수 있습니까?웹 repl 아키텍처

+0

사용자 정의 프로그램 언어는 무엇입니까? 구문 (구문과 의미 모두)을 지정 했습니까? 사용자 정의 인터프리터는 일부 무료 소프트웨어입니까? –

+0

그냥 간단한 리스프 인터프리터 –

+0

Lisp 또는 Scheme? 소스 코드의 URL은 무엇입니까? 어떤 프로그래밍 언어로 통역사를 코딩하고 있습니까? –

답변

0

libonion과 같은 좋은 HTTP 서버 라이브러리를 사용하십시오. 잘 이해해야 HTTP하십시오.

자바 스크립트에서 클라이언트 측 유효성 검사를 사용하는 경우에도 신뢰할 수없고 서버 측에서 유효성 검사를 반복하십시오. 적대적인 사용자가 직접 HTTP 요청을 보낼 수 있습니다 (AJAX 외부).

세션 및 쿠키를 사용하여 다양한 클라이언트 브라우저를 식별하고 (서버 측 인터프리터의 경우) 각각에 대해 별도의 환경을 유지하십시오. 세션과 환경의 격리를 염두에두고 재진입 통역사를 구현하십시오.

Containerization (도커 사용)은 보안을 강화하기위한 조치이지만 서버 측 코드가 없어도 보안을 유지하도록 설계되었습니다 (모든 것을 검사하십시오).

당신이 읽을하지 않은 경우

이미 SICPDragon Book, Lisp in Small Pieces, Programming language pragmaticsGC handbook를 참조하십시오.