从Django数据库存储和运行Javascript函数带来的复杂性

时间:2018-11-21 20:33:28

标签: javascript python django

在一个项目中,我将用户定义的Javascript函数存储在Django数据库中,并使用Js2Py运行它们。

类似这样的东西:

class MyModel(models.Model):
    function = models.TextField()

    def run_function(self, value):
        try:
            # Compiling
            compiled_function = js2py.eval_js(self.function)
            # Running with value
            compiled_function(value)
        except:
            pass

我注意到,如果将function(value) { console.log("hello"); }存储在函数字段中,并调用run_function(),则会在本地服务器的控制台中打印出单词hello。所以我想知道一些事情:

  1. 如果我始终在try块中运行该函数,可能会出现哪些安全问题?
  2. 由于它可以在我的控制台中打印,因此它本身不是安全问题吗?
  3. 有什么办法可以确保这件事安全吗?

我确实必须构建一个系统,其中用户将简单的自定义函数存储在数据库中,并且我的系统需要运行它们。这个问题可能有什么解决方案?

0 个答案:

没有答案