2009-09-04 5 views
2

사용자가 자바 스크립트를 입력하여 내 앱에서 일부 로직을 지정할 수 있도록하고 있습니다. 자바 스크립트는 브라우저에 입력되어 표시되지만 서버 쪽에서 먼저 저장되고 유효성이 검사됩니다.서버 측 JavaScript 정리 또는 샌드 박스?

이것은 보안상의 명백한 의미를 나타냅니다.

JavaScript 언어의 하위 집합 만 허용하는 것이 이상적입니다. 직관적으로 허용되는 것을 지정하고 다른 모든 것을 거부하는 옵트 인 접근 방식은 허용되지 않는 것을 지정하는 옵트 아웃 접근보다 안전합니다.

내가 본 솔루션 중 많은 부분이 클라이언트 측입니다. 자바 스크립트가 유효하지 않은 경우 사용자에게 피드백을 줄 수 있으므로 서버 측 솔루션이 내 요구에 더 적합하다고 생각합니다. 한 번 "깨끗한"서버에.

자바 스크립트를 구문 분석하고 일부 검사를 수행하는 데 유용 할 수도 있습니다. 예를 들어 사용자에게 일부 변수를 제공하고 초기화되지 않은 변수를 사용하고 있지 않은지 확인하려는 경우, 또는 코드가 예상 된 형식으로 무엇인가를 반환하는지 확인합니다. 샌드 박스 솔루션은 적어도 방해하지 않아야합니다.하지만 정규 표현식뿐만 아니라 코드를 파싱하여 작동하는 경우 잠재적으로 적극적으로 도움이 될 수 있습니다. 일부 구문을 확인하기 위해 자체적 인 후크를 넣을 수 있습니다.

Google Caja는 내가 원하는 것을 할 수있는 것처럼 보이지만 나는 그다지 뛰어 들지 못했습니다.

어떤 접근 방식을 권하고 싶습니까?

오픈 소스 솔루션은 훌륭합니다. 내 자신의 코드를 작성하는 데 신경 쓸 필요는 없지만 처음부터 올바르게 해결하는 것은 사소한 문제처럼 보입니다.

답변

1

웹 워커 스레드를 지원하지 않는 브라우저를 종료하지 않으려면 JSandbox을 사용해보십시오. 효과적으로 "샌드 박스"작업자 스레드에서 JavaScript 실행을 샌드 박싱 할 수 있습니다.