【发布时间】:2012-09-25 09:55:06
【问题描述】:
我们想授予我们的一些用户从数据库中读取他们想要的任何内容的权限,因此我们很感兴趣 - 是否有任何 SQL 方言只支持 SELECT、WHERE 和 JOIN 运算符?
我们想这样使用它:
class MyModelWithSQLRule(models.Model):
sql_rule = models.TextField()
def what_data_i_will_get(self):
"""
Here we must get exception with attempt of query like
DELETE * FROM users_users; SELECT id FROM users_users;
"""
parsed_sql_rule = select_only_parser(self.sql_rule)
return Users.objects.raw(parsed_sql_rule)
这与数据库引擎无关。我想要 language,它属于 SQL 的子家族,但没有像 DELETE 这样的危险词。
【问题讨论】:
-
在您的数据库引擎中使用权限!
-
根据您使用的数据库,有很多不同的答案“如何”,那么您使用的是什么数据库以及您是否使用 OR-M?
-
您使用的是哪个 SQL 数据库?不同的数据库支持不同的访问控制机制。
-
“从数据库中读取任何他们想要的内容”。这听起来像是一个危险和/或限制性的设计......一个实际的例子将有助于塑造解决方案
-
为什么你需要在你的 DSL 中进行数据库访问控制而不是使用你的数据库提供的控制?