Sql server 使用MS Access链接表到SQL server后端时,是否可以进行SQL注入
我一直在做一些这方面的研究,但到目前为止还是一片空白。情况是这样的 我正在开发一个连接到SQL Server后端的MS Access前端 在某种程度上,我使用链接表/表单访问SQL DB——这样,当用户更新表单中的值时,Access会自动(我没有代码)更新SQL DB中的值 所以我的问题是,这是否容易受到SQL注入的影响?或者将访问“参数化”更新,使任何可能的SQL注入代码只需按原样添加到DB中,而不是在服务器上解析并可能运行某些恶意代码Sql server 使用MS Access链接表到SQL server后端时,是否可以进行SQL注入,sql-server,ms-access,sql-injection,Sql Server,Ms Access,Sql Injection,我一直在做一些这方面的研究,但到目前为止还是一片空白。情况是这样的 我正在开发一个连接到SQL Server后端的MS Access前端 在某种程度上,我使用链接表/表单访问SQL DB——这样,当用户更新表单中的值时,Access会自动(我没有代码)更新SQL DB中的值 所以我的问题是,这是否容易受到SQL注入的影响?或者将访问“参数化”更新,使任何可能的SQL注入代码只需按原样添加到DB中,而不是在服务器上解析并可能运行某些恶意代码 提前感谢您对这方面的任何指点 使用绑定表单而不运行手动构
提前感谢您对这方面的任何指点 使用绑定表单而不运行手动构造的查询: 这是否容易受到SQL注入的影响 没有 或者将访问“参数化”更新,这样任何可能的SQL注入代码都将简单地“按原样”添加到DB中 对
大卫·芬顿摘自:
您可以使用查看Access如何通过ODBC与SQL Server准确交互。使用绑定表单而不运行手动构造的查询: 这是否容易受到SQL注入的影响 没有 或者将访问“参数化”更新,这样任何可能的SQL注入代码都将简单地“按原样”添加到DB中 对
大卫·芬顿摘自:
您可以使用查看Access如何通过ODBC与SQL Server准确交互。在添加代码、命令或将在服务器上运行的其他SQL代码的传统意义上,使用链接表时,对于标准注入,答案是否定的。这是因为客户端上的任何T-SQL代码都不会通过ACE数据库引擎传递,并且多个命令(比如用a;)也不会传递到服务器端。 但是,access应用程序中可能会发生一些“可能的”注入,链接表也是如此。换句话说,在这种组合中引入SQL server或使用内置数据库引擎不受经典注入的约束 所以这里的上下文非常重要。因此,真正的问题是access应用程序是否要接受SQL注入?如果您找到了一个与内置ACE引擎一起工作的工作示例的证明,那么如果您使用链接表到SQL server,那么同样的注入也将存在 目前还没有SQL注入概念的工作证明,可以运行服务器端T-SQL代码,或者我知道这是可能的 但是,如果VBA代码使用传递查询,那么答案肯定是肯定的,因为Access客户端将把原始t-sql传递到服务器端,而不接触此类t-sql命令和t-sql语句。因此,一个表单提示输入一些参数值,然后在VBA中连接到一些原始t-sql语句,然后发送到sql server,它肯定会接受sql注入 因此,链接表、绑定到这些链接表的表单不受服务器端注入的约束 在某些情况下,从用作Access sql参数的表单文本框中提取的表达式可能会修改开发人员的意图 例如: strSQL=“从tblCustomers中选择*,其中InvoiceID=“me.TextBoxPrompt” 在上面的示例中,预期用户键入234324(发票号)。但是,用户可以键入已知的VBA函数。根据您的沙盒模式设置,可以输入一个不需要的表达式。这实际上可能导致某些VBA运行。(用户必须知道公共VBA函数才能运行) 因此在上面,它实际上不是sql注入,而是VBA注入(这里有一点语义,但区别很重要) 因此,一些有限形式的sql注入可能发生在客户端,但这种表达式永远不会到达服务器端 归根结底,这意味着通过采用SQL server,SQL注入的可能性不会以任何方式超过标准Access产品(我指出了一些有限的注入类型)
此规则的唯一例外是,如果Access应用程序使用原始发送到SQL server的传递查询,并且用户参数以原始格式从表单中获取并直接传递到SQL server。因为我经常使用由字符串和用户提示生成的传递查询,所以这是一个问题。我经常使用字符串而不是真正的ADO参数(工作量太大)。为了防止注入,我有一个小函数,从给定字符串中删除“;”和()字符。因此,这个小例程可以防止向SQL server发送由“;”分隔的其他命令。在添加代码、命令或将在服务器上运行的其他SQL代码的传统意义上,答案是否定的