从Django

时间:2018-11-22 09:01:55

标签: python django database-design

这是一个非常奇怪的用例,但是,我们正在开发的项目需要一种方法来存储用户定义的函数并在视图中运行它们。功能代码将存储在模型的TextField中。

理想情况下,这些函数本身非常简单,主要涉及算术运算,if-else块和循环。这些功能也可以使用任何语言,只要Python能够以某种方式运行它们即可。

一个明显的问题是可能的安全问题,因为始终最好假定代码将来自不受信任的来源。无论如何,我们已经考虑过以下可能的解决方案:

  1. 将Python函数存储为字符串,然后使用eval()运行它们。
  2. 将Javascript函数存储为字符串,然后使用Js2Py运行它们。
  3. 创建一种简单的编程语言(Python的子集),该语言删除了所有可能导致安全问题的方法和运算符。因此,该功能将以这种新语言编写。

我最好的选择是什么?显然,前两个选项非常不安全,而第三个选项则难以实施。有更好的方法吗?

0 个答案:

没有答案