2014-03-02 1 views
3

https://www.pythonanywhere.com/try-ipython/과 같은 사이트는 어떻게 작동합니까?웹 기반의 파이썬 대화 형 쉘을 만드는 방법

그들은 아마도 여러 개의 exec 명령을 사용하거나 ipython과 인터페이스합니다.

그러나 "예방 조치"를하지 않으면 극히 안전하지 않을 수 있습니다. 단순한 (그리고 악의적 인) 사용자는

import shutil, os 

과 같이 뭔가를 할 수 있습니다.

기술적으로 web based python interactive shell은 어떻게 가능합니까? 대화식 셸이 공급자에게 나쁜 영향을 미치지 않도록하는 방법은 무엇일까요?

+2

샌드 박스 VM에 있습니까? 그게 나를 위해 떠오르는 첫 번째 방법입니다. 아마도 가장 효율적인 방법은 아닙니다. – user2357112

+0

ipython은 웹 기반이지만 localhost에 바인드하는 노트북 모드를 가지고 있습니다. 그것을 안전하지 않게 제공하려면 바인딩을 변경하거나 역방향 프록시 만 사용해야합니다. – Paul

+0

[Python 코드가 특정 모듈을 가져 오지 못하게 할 수 있습니까?] (0120-386-305) – Paul

답변

6

여기에 PythonAnywhere dev가 있습니다. 우리는 파일 시스템 감옥, 권한이 낮은 계정, ulimit 제한 및 cgroup을 샌드 박스 사용자와 결합하여 사용합니다. 일부 복잡한 iptables 라우팅.

향후 LXC 또는 Docker로 이동할 가능성이 있습니다. 우리는 2012 년에 시스템의 첫 번째 버전을 출시했을 때 제작 준비가 완료된 특정 조합을 선택했습니다. 우리가 오늘 처음부터 시작한다면 우리는 그것을 다르게 할 것입니다.

우리의 현재 시스템이 좋지 않다는 말은 아닙니다. 정말 잘 작동합니다. 하지만 현재 사용할 수있는 것들을 사용한다면 코드를 제거 할 수있는 많은 코드가 필요하다는 것을 의미합니다. 더 간단한 코드는 명백하게 더 좋습니다 :-)

[편집] 나는 또한 당신이 찾을 수 있다고 덧붙여 야합니다 this talk I did at EuroPython 재미있는. 쉘이 작동하는 방법에 대한 보안 측면은 다루지 않지만 쉘을 실행하는 데 필요한 여러 가지 항목을 다루기 때문에 질문의 주제 (웹 기반 Python 대화식 쉘을 만드는 방법)와 관련이 있습니다. 브라우저에서 실행하고 서버에서 실행되는 Python 프로세스에 연결합니다.

+0

아무도 python-anywhere dev 자신보다 더 잘 설명 할 수있을 것 같아요. 감사합니다 :) – goFrendiAsgard

1

파일 시스템 감옥, 읽기 전용 파일 시스템, 낮은 ulimit 제한, 낮은 권한 사용자 계정, LXC 컨테이너, selinux 제한 사항, 도커 컨테이너, full-on VMs 등의 다양한 샌드 박스/격리 기술이 OS에서 사용 가능합니다. 불변의 이미지 상태로 재부팅하는 VM 등. pythonanywhere가 무엇을 채택하고 있는지 명확히 알 수 없습니다.

+0

알았어, VM이 유일한 것 같아. way .... – goFrendiAsgard

관련 문제