C# 避免sql server本身的sql注入
我有一个应用程序,比如QueryBuilder,它从用户输入的sql查询中选择表中的一些数据 我正在sql server中执行此查询 现在我想让用户停止使用DQl命令以外的命令 是否可以在sql server本身中执行此操作 sql server中是否有任何命令可以判断其DQL命令是否正确,然后我可以对其进行限制 谢谢 它的sql server查询 这将是极难锁定的;您可以通过某种方式使用SQL server中的权限,但对他们来说,做一些非常糟糕的事情还是很容易的(例如,不需要太多大表的交叉连接就可以有效地使服务器脱机,或者他们可以打开一个可序列化的事务,从一些表中选择,而不关闭事务) 我强烈建议不要让用户编写sql。给他们其他工具来做他们需要的事情C# 避免sql server本身的sql注入,c#,sql-server-2008,C#,Sql Server 2008,我有一个应用程序,比如QueryBuilder,它从用户输入的sql查询中选择表中的一些数据 我正在sql server中执行此查询 现在我想让用户停止使用DQl命令以外的命令 是否可以在sql server本身中执行此操作 sql server中是否有任何命令可以判断其DQL命令是否正确,然后我可以对其进行限制 谢谢 它的sql server查询 这将是极难锁定的;您可以通过某种方式使用SQL server中的权限,但对他们来说,做一些非常糟糕的事情还是很容易的(例如,不需要太多大表的交叉连接
或者,在另一台服务器上运行查询—理想情况下,您已经推送了数据的安全版本(即没有任何PII)—在这种情况下,它们是否主导服务器并不重要,因为它没有连接到任何重要的东西。有点像。您需要更具体一些吗?SQL是如何输入的?你能锁定参数吗,还是全部都是明文?您可以让他们与不同的DB用户连接,只需有限的时间rights@M阿克拉:哪个问题!?!?输入是什么?谨慎的条款?还是sql?@MarcGravel其sql server查询请检查UpdateEyes,通常最佳做法是将报告数据库作为生产数据库的镜像(从生产中定期刷新),因此报告查询不会降低生产速度。顺便说一句,有一些用于生成报告的应用程序,如Microsoft Report Builder或Korzh Easy Query。