Python 嵌入式自定义表达式的安全实现策略
我正在设计/原型化一种特定领域的语言。。。至少就目前而言,在Python中是这样。设计很简单-但需要支持指定任意函数(其域是从标签到整数的映射-范围是整数)。在许多情况下,函数仅会选择域中的标签以产生结果。。。但我想允许任何可以在通用编程语言中轻松(高效)实现的函数的规范 需要注意的是,我希望函数是“安全的”。。。我的意思是:Python 嵌入式自定义表达式的安全实现策略,python,functional-programming,interpreter,dsl,Python,Functional Programming,Interpreter,Dsl,我正在设计/原型化一种特定领域的语言。。。至少就目前而言,在Python中是这样。设计很简单-但需要支持指定任意函数(其域是从标签到整数的映射-范围是整数)。在许多情况下,函数仅会选择域中的标签以产生结果。。。但我想允许任何可以在通用编程语言中轻松(高效)实现的函数的规范 需要注意的是,我希望函数是“安全的”。。。我的意思是: “纯”功能:确定性,无副作用。(即没有外部状态;没有与文件、i/O、设备等的交互) 终止-成功或在特定(小规模)分配的计算资源过期后终止 我非常希望这个功能能够有效地
- “纯”功能:确定性,无副作用。(即没有外部状态;没有与文件、i/O、设备等的交互)
- 终止-成功或在特定(小规模)分配的计算资源过期后终止
如果您在Web浏览器中运行此操作(通常是不可信代码关注的地方),请考虑用类似的方式运行IT客户端。没有人关心用户是否入侵了自己的机器
如果您确实实现了一个定制的解释器,那么您不必重新实现所有的程序。在不受信任的代码上使用compile()
被认为是相对安全的,但要小心大常量消耗时间和内存。在可以终止的单独进程中运行编译器。然后,您只需要编写一个Python字节码解释器,它无法访问任何重要的内容