所以我要创建一个简单的站点,用户可以在其中输入自己的SQL查询,我将在服务器端运行。
我知道SQL注入攻击,并认为这可能是相当危险的事情。
但是(如果有的话)什么是允许此功能的安全方法?
e.g。我可以想到我可以执行的以下规则。
我应该采取其他安全措施吗?
答案 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
但无论如何它还有风险!有人会发现安全漏洞!