2010-04-20 4 views
2

파이어 폭스 (+ qt4)로 플러그 가능한 응용 프로그램을 작성할 계획입니다. 그러나 나는 보안에 대한 큰 우려를 가지고있다. 플러그인은 애플리케이션 내에서 무엇이든 할 수있는만큼 강력해야합니다 (그리고 그러한 제약을 사용할 때 사용자를위한 서명 프로세스와 경고가 추가로 필요함). 환경과 상호 작용 (파일 시스템, 다른 프로세스 , 네트워킹 등) 필자가 쓸 파이썬 코드를 통해서만 플러그인에 의해 수행되어야한다.샌드 박스 파이썬 플러그인

플러그인을 설치하기 전에 플러그인 코드에서 정적 코드 분석을 수행하는 것 이외에도 안전하고 쉬운 방법이 있습니까?

한마디로

답변

5

: 제

설명 : 년 동안, 파이썬 전문가는 파이썬을위한 샌드 박스를 구축하려고합니다. 샌드 박스의 문제는 입출력을 수행하는 데 몇 가지가 필요하다는 것입니다. 즉, 샌드 박스와 앱간에 데이터를 모두 전송할 수 있어야합니다. 그들은 그것을하기위한 자동적 인, pythonic 한 방법을 찾지 못했습니다. 어느 쪽이든, 플러그인으로 데이터를 교환 할 수 없거나 내부 검사를 통해 객체 트리를 걸어 갈 수 있습니다.

당신의 생각을 상상해보십시오 : 플러그인은 여러분이 작성한 파이썬 코드를 호출합니다. 이것은 아마도 메서드 나 함수를 호출하는 것을 의미합니다. 즉, 유효한 메서드 또는 함수 객체를 제공해야합니다. 메서드 또는 함수 객체에서 모듈 객체를 가져올 수 있습니다. 귀하의 모듈에서 모든 기호 (즉, 가져 오기)를 얻을 수 있습니다. 거기에서, 당신의 모듈이 할 수있는 모든 것을 할 수 있습니다 (적어도).

See this article 일부 포인터.

+0

설명 및 링크를 제공해 주셔서 감사합니다. 한가지 더 궁금한 점이 있습니다. C++로 내 응용 프로그램을 작성하고 PythonQt를 통해 스크립팅 언어로 Python을 사용하여 Python으로 작성된 플러그인에 내 응용 프로그램의 (신뢰할 수없는) 객체를 제공하여이 기능을 계속 구현할 수 있습니까? – Flavius

+0

내가 말했듯이 : 파이썬 라이브러리 모듈과 모든 IO 함수 (열린 파일 등)에 액세스하는 모든 것을 생략하면. 남겨질 것은 구문 자체보다 조금 남을 것입니다. 데이터를 교환하면 플러그인은 데이터 객체가 도달 할 수있는 모든 것을 도달 할 수 있습니다. –

2

일반적인 파이썬 프로세스 내에서 실행되는 파이썬 코드는 항상 크롤링 할 수 있기 때문에 샌드 박스화할 수 없지만 전체 파이썬 인터프리터를 샌드 박싱 할 수는 있습니다.

예를 들어 PyPy가 지원하는 샌드 박스 : 당신이, 당신은 아마 신뢰할 수있는 데이터를 전송하는 데 사용 일부 공유 메모리 보안 pypy-C 인스턴스에서 파이썬 스크립트를 실행하기위한 파이썬 라이브러리를 작성할 수 싶었다면 http://codespeak.net/pypy/dist/pypy/doc/sandbox.html

및 프로그램에서 이벤트를 발생시키는 신호.

당신은 또한 정상적인 임베디드 cpython 해석기를 사용할 수 있습니다. selinux와 같은 코드를 사용하면 (일반적으로 시스템 관리 도구입니다) 대부분의 Linux 배포판이나 Windows 대체품에 따라 지원됩니다. 귀하의 플랫폼. Google 크롬에는 거대한 코드베이스를 파헤 치고 싶다면 샌드 박스 코드가 있습니다.

1

매우 오래된 질문이지만 QtScript가 답이 될 수 있습니다. 그러나, 당신이 이것을 샌드 박스로 만들 수 있는지 그리고 QtScript가 당신의 어플리케이션에 충분히 강력하다면 나는 잘 모른다.