使用本机数据库登录/用户时的SQL注入

时间:2012-12-28 08:03:39

标签: sql database login code-injection

在开发用户与其本机数据库登录连接的应用程序时,我不需要关心SQL注入吗?原因是用户可以执行他们想要的任何SQL。 (有些地方管理员执行CREATE LOGIN和CREATE USER语句,这些必须动态构建。)我在谈论局域网上的本机Windows应用程序。

3 个答案:

答案 0 :(得分:2)

嗯,SQL注入是执行SQL的可能性,因此在SQL shell访问时,“SQL注入”所需的一切都已经过授权。但是,您仍然需要关心用户是否以非管理员身份运行,可能限制他们可以访问哪些表,并且系统在以更高权限登录时发送一些其他SQL命令(创建用户等)。使用prepared statements获取此类代码。

答案 1 :(得分:0)

如果您的意思是建立一个Web应用程序,并使用用户'数据库凭据连接到数据库,是的,你需要担心SQL注入。

大多数数据库基于对象限制权限 - 表,视图,存储过程等。因此,用户以" Bob"可以访问表"销售",但不能访问表"付款"。

数据库不限制对表中行的访问(例如)。因此,用户连接为" Bob"谁可以在您的代码中利用SQL注入错误可以删除" sales"表。你可能不想要那个。

如果用户" Bob"当然,它们还具有直接的SQL访问权限,只需在SQL命令行运行该语句即可 - 但通常情况下,Web应用程序可用于直接SQL访问的情况。您的网络应用程序可能会首先放在内部网上,但您无法保证将来不会打开。

考虑到在构建应用程序时防止SQL注入攻击是多么容易,以及以后修复它们会带来多大的痛苦,我认为没有真正的理由不首先阻止它们。

答案 2 :(得分:0)

事实上,“SQL注入”是一种常见的误解 由于无法正确格式化他们的查询,人们发明了一个“sql注入”的东西作为借口。
正确格式化的查询将同时用于两个目的:

  • 无论发送什么数据,它始终在语法上都是正确的。
  • 作为副作用,它对于臭名昭着的“SQL注入”事物是无懈可击的。

我怀疑您是否希望您的查询因某些意外符号而失败。所以,无论是什么“注射”,你都必须正确地格式化它。但是一旦格式化,无论如何都不会注入。所以,你必须关注格式,而不是注射。

我也有一种感觉,让用户使用数据库凭据登录并不是一个好主意。