用于sql server的greensql替代方案

问题描述:

我需要一个具有与greensql类似功能的sql server工具(SQL注入保护)。 Greensql website用于sql server的greensql替代方案

+0

这有什么产品的问题你想找到不同的事情做同样的事情? – IAmTimCorey

+0

据我所知greensql只适用于mysql和postgresql – user194076

+0

它也适用于Microsoft SQL Server。 – IAmTimCorey

大多数与sql server交谈的客户端平台都支持查询参数。所以,你会发送一个命令到一个占位符(变量名)的服务器看起来像这样的值:

SELECT columns FROM [table] WHERE ID= @SomeParameter 

客户端代码将沿着从实际SQL盒装起来单独为@SomeParameter值发送代码,它的设置类似于tsql中的一个变量,所以它是绝不会将直接替换为查询字符串。数据是数据,代码是代码,而不是两者混合。

你可以把任何你想要的东西放在那里,不管你尝试了什么,它永远不会被作为代码执行。它不会发生。因为您不必担心解析器中的错误,当下一个版本的Sql Server添加一个破坏旧解析器的新功能时,或者如果您的sanitzer正在修复查询时,会发生什么情况。

因此,如果您正确构建您的应用程序,那么在sql server中并不需要这样的产品。现在,这种产品可能会强制您的开发人员使用良好的过程(或者只是充当背景层,以防他们做错了),但在我看来,最好花费您的时间能够正确地把握它。

另一方面,审计功能让我看起来更有趣。 CTO可以将此产品放置在数据库服务器和DBA之间。数据库管理员仍然可以完全访问服务器,但是CTO有办法审核他们无法覆盖的地方。

并使用与SQL Server相结合,而不是“注入”在谷歌的搜索矢量现在变成了几个产品,包括“审计”这一个:
http://www.enforcive.com/

+0

这是一个伟大的答案。尽管我对这个参数有疑问,为什么它不会发生。我理解SQL的基础知识,但对我来说这仍然很陌生。如果我们的@some参数有价值,说:“Redmond'; drop table OrdersTable--”这仍然是sql注释。 “它永远不会作为代码来执行,它不会发生。”那么它将如何执行? – user194076

+1

参数根据类型进行检查。如果ID列是int,那么“'Redmond'; drop table ...”将不会被转换,并且会抛出异常。如果ID列是varchar,它将采用该字符串并将其用作查找的值。在这种情况下,如果你没有碰到具有这种值的标识符,它将不会返回任何行。 –

+1

@user - 这个_isn't_会发生什么,但你可以认为它就像这样运行代码:'DECLARE @SomeParameter varchar(25); SET @SomeParameter = GetPassedParameterValue(0); SELECT ... WHERE SomeColumn = @ SomeParameter' –