기본 기능을위한 소스 코드를 데이터베이스에 저장하고 관리 인터페이스를 통해 수정해야합니다. 이 코드는 여러 개의 숫자와 문자열을 매개 변수로 취해 번호 또는 없음을 반환합니다. 나는 eval이 악의적 인 것을 알고 있으므로 Python의 아주 기본적인 하위 집합을 실행하거나 Python 기반 웹 응용 프로그램 내에서 적어도 문법적으로 비슷한 것을 실행하는 안전한 방법을 구현해야합니다.python의 하위 집합을 안전하게 실행하려면 어떻게해야합니까?
확실한 대답은 DSL을 구현하는 것입니다. 그러나 이에 대한 경험이 없으며 어디서부터 시작해야할지 전혀 알지 못하고 사용 가능한 많은 리소스가 내 머리 위로 조금씩 이동하는 것처럼 보입니다. 어쩌면 거기에 이미 데이터베이스의 문자열에서 안전한 파이썬 호출 가능한 함수를 생성 할 수있는 뭔가가 이미있을 것이라고 기대하고있다. 언어는 할당, 기본 수학, if/else 및 대소 문자를 구분하지 않는 문자열 비교를 지원하기 만하면됩니다. 다른 모든 기능은 보너스이지만, 대부분의 일은 복잡한 데이터 구조, 클래스, 함수 등에 대한 필요성없이 수행 될 수 있다고 생각합니다.
현재 존재하지 않는 경우, 하나를 창조 할 수있는 가능성이 있지만, 내가 말했듯이, 어떻게 그것에 대해 갈 생각이 없다.
이것은 가장 좋은 제안처럼 보이고 simpleCalc는 필자가 필요로하는 일부 *를 지원하지만 DSL도 대소 문자를 구분하지 않는 문자열 비교와 일종의 if/else 블록을 지원해야합니다. – Andre
유사한 줄에 따라 http://waxeye.org와 같은 것이 Python AST에 들어 가지 않으면 조금 더 멀리 갈 수 있습니다. 그것을위한 문서의 예제를 참조하십시오. 미니 언어를 실제로 실행하기 위해 자신 만의 코드를 작성해야하지만, 패키지 나 다른 일부 계산기 예제 중 하나에서 확장하기에는 너무 어려워 보이지 않는 것으로 들립니다. –