通过表单输入接受SQL查询的安全方式

时间:2013-04-12 05:44:36

标签: sql

所以我要创建一个简单的站点,用户可以在其中输入自己的SQL查询,我将在服务器端运行。

我知道SQL注入攻击,并认为这可能是相当危险的事情。

但是(如果有的话)什么是允许此功能的安全方法?

e.g。我可以想到我可以执行的以下规则。

  • 允许用户仅“选择” - 永远不允许更新,删除(或其他任何内容)。
  • 允许用户只访问某些表格(如果我知道的话)。

我应该采取其他安全措施吗?

2 个答案:

答案 0 :(得分:0)

除了安全问题,性能可能是ElectricLlama指出的问题。您可能希望提前查看获取查询的执行计划,如果查询看起来太昂贵,则拒绝运行: How do I obtain a Query Execution Plan?

答案 1 :(得分:-1)

除上述内容外,请确保将用户添加到db_datareader组,并将其设为只读。我猜你将使用单个用户来执行数据库操作。

如果用户意外地进行了几次交叉连接,您仍然会导致数据库失败:

SELECT *
FROM Table1,Table2,Table3
WHERE Table1.Field1=Table2.Field2
-- Oops I forgot to enter the Table3 Join condition 
-- so now I get a cross join which will cause havoc
-- If the table is of appreciative size

但无论如何它还有风险!有人会发现安全漏洞!