【发布时间】:2009-04-27 22:37:42
【问题描述】:
例如,我经常想用 stackoverflow 搜索
SELECT whatever FROM questions WHERE
views * N + votes * M > answers AND NOT(answered) ORDER BY views;
或类似的东西。
有没有合理的方式让用户使用 SQL 作为搜索/过滤语言?
我发现它有一些问题:
- 访问/更改内容(仔细设置的用户帐户应该可以解决该问题)
- SQL 注入(考虑到以前的最坏情况,他们应该能够做的就是找回垃圾并在会话中崩溃)。
- 带有病态查询的 DOS 攻击
- 你给他们什么索引?
编辑:我想允许加入,什么也不允许。
【问题讨论】:
-
是的,我确实看到给精神病人一颗核弹可能更安全,但我实际上并不打算这样做。
-
我知道你问了很长时间,在你的例子中——你见过data.stackexchange.com吗?您可以使用 SQL 查询所有内容!我现在正在查看他们的源代码,看看他们是否做了什么特别的事情
-
@MikeMurko:我并不是专门寻找 ES/SO 解决方案,而是一种接受(部分?)来自不受信任的最终用户的 SQL 查询的通用方式。
-
是的,我知道,但你使用了那个例子,我想你可能会觉得它很有趣。至于您的问题...如果您使用的是 SQL Server - 我会创建一个新用户,没有权限,创建您的数据的视图,并且只允许用户对这些视图执行选择。这样,您可以隐藏您的表结构、字段名称,并可以为它们提供更有意义的连接数据集。显然然后需要有关这些视图的文档。希望有帮助!
标签: sql security web-applications