是什么让Android应用程序容易受到SQL注入攻击?

时间:2015-05-22 17:12:31

标签: java android security android-activity sql-injection

SQL注入的定义

SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中将恶意SQL语句插入到输入字段中以便执行(例如,将数据库内容转储给攻击者)。

SQL注入如何影响Android O.S

Android应用程序中使用的SQLite是功能完备的数据库,因此就像SQL Server或MySQL盒子一样,它们容易受到SQL注入的影响。 SQL注入通常通过向查询字符串添加数据或在表单字段中添加数据来工作;让黑客访问数据库或未经授权的登录。 SQL注入通常用于攻击Web视图或Web服务,但它也可用于攻击活动。

SQL注入漏洞的根本原因是由于使用了动态或连接的SQL查询。如果通过连接用户提供的输入构造SQL查询;然后,用户可以提供SQL攻击向量而不是有效输入,并操纵后端SQL查询。

注入过程通过提前终止文本字符串并附加新命令来工作。因为inserted命令在执行之前可能会附加其他字符串,所以注入的字符串将以注释标记“ - ”结束。执行时忽略后续文本。

我的问题

虽然我理解 SQL注入 SQL注入的方式。我不知道哪些因素会导致选择的Android代码容易遭受此类攻击。

4 个答案:

答案 0 :(得分:5)

SQL注入不是特定于Android的。

无论如何答案很简单:如果将SQL命令字符串与用户数据输入(通过GUI,网络......)组合在一起,则应用程序容易受到sql注入的攻击。<​​/ p>

简单的说法是仅将静态SQL命令字符串与PreparedStatement结合使用。编译完成后,所有用户数据和其他参数都在PreparedStatement上设置。

答案 1 :(得分:3)

如果您的代码采用了用户名和密码等变量,那么您的应用程序会生成一个SQL查询,只是将这些变量放入sql字符串而不先对字符串进行整理,用户可能会注入错误的代码,结果可能会很糟糕。因此,就像使用任何应用程序进行sanatizing一样,用户输入是攻击不成功的关键。

答案 2 :(得分:1)

我想说,Android应用程序容易受到SQL注入的影响是Android中内容提供商的一个糟糕用途或配置。

我最近写了一篇关于它的博客文章,在那里我解释了一个在Android内容提供商中注入SQL以获取数据以及如何防范此类攻击的示例,请查看它:link

答案 3 :(得分:0)

在要设置的清单中修改受影响的<provider>的{​​{1}}标签

ContentProvider