나는 당신에게 신선한 아이디어가 필요하다.os 함수에 대한 파이썬 스크립트 접근 제한
사용자가 자신의 파이썬 스크립트를 업로드하고 서버 중 하나에서 실행할 수있는 시스템을 구현 중입니다.
보안 문제는 조심합니다. 이 스크립트에서 운영 체제에 대한 액세스를 제한하고 싶습니다. 모든 스크립트의
먼저 등
사용하지만 일부 라이브러리의 사용을 선언 할 수 있습니다, exec
, import
, open
처럼 많은 가장 눈에 띄는 키워드에 대한 액세스를 허용하는 ast
파서 확인하세요. 중요한 것들 중 하나는 pandas
라이브러리입니다 (또한 matplotlib
, numpy
등을 제공해야합니다). 나는 '프록시'객체를 구현하여 모듈을 모방했지만 제한된 속성 집합에 대한 액세스를 제공했습니다. 예를 들어 프록시 객체 json
을 제공 할 수 있지만 기능 loads
또는 dumps
에 대한 액세스는 허용되지 않습니다.
임의의 개체에서 이름이 os
, sys
등인 특성을 얻으려는 가장 확실한 시도는 허용되지 않습니다. 이 방법을 사용하면 사용자가 json.os
또는 os
모듈에 액세스하려고 할 때 구멍을 막으려 고합니다.
이것은 작동 할 수 있지만 간단한 방패입니다. 모든 모듈을 검토하고 대부분의 위험한 기능에 대한 액세스를 차단할 수 있지만 놓친 모듈도 잠재적 손상을 초래할 수 있습니다. 또한 일부 모듈은 pandas.tools.util.pd
과 같은 까다로운 방법으로 액세스 할 수 있으며 원래 pandas
모듈을 참조합니다.
파일 시스템 수준에서 액세스를 제한하는 것에 대해 생각했지만 스크립트는 eval
이라는 기본 프로세스 (celery
기반)의 기능으로 실행되며 동일한 사용 권한을가집니다. 사용자)를 주 프로세스로 사용합니다. 이론적으로 모든 소스를 읽고이를 사용자에게 전달할 수 있습니다.
내 아이디어 중 하나는 최소한의 소스 및 사용 권한 집합으로 별도의 프로세스에서 스크립트를 실행하고 파이프를 사용하여 데이터를 전달하는 것입니다. 그러나 이것은 많은 코드를 리팩터링해야하고 안정성은 보장되지 않습니다. 코드를 작동시키기 위해서는 여전히 많은 코드가 필요합니다.