首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么使Android应用程序易受SQL注入的影响?

什么使Android应用程序易受SQL注入的影响?
EN

Security用户
提问于 2015-05-22 17:14:14
回答 2查看 11.9K关注 0票数 2

注入

的定义

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

SQL注入如何影响AndroidO.S

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

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

注入过程的工作方式是过早终止文本字符串并追加一个新命令。因为插入的命令在执行之前可能会附加额外的字符串,所以注入的字符串以注释标记“-”结束。后续文本在执行时被忽略。

我的问题

虽然我了解什么是SQL注入,以及SQL注入是如何发生的。我不知道是什么因素使选择的Android代码容易受到这样的攻击。

EN

回答 2

Security用户

发布于 2015-05-22 17:34:27

当应用程序使用SQL并不小心地将SQL请求与攻击者提供的元素组合时,就会应用SQL注入攻击。这里,“漫不经心”的意思是“不使用准备好的陈述”。准备语句是使用外部提供的数据执行SQL的正确方法;许多开发人员试图从“转义引用字符”的角度来考虑SQL,这是一种糟糕的方法,并导致灾难(即使最终会发生一些转义,但只有准备好的语句才能保证正确执行)。

Android并不是所有这些因素中的一个因素,除非是间接的: Android附带了SQLite,因此开发人员非常想使用它,因此即使在没有严格要求的情况下也会使用SQL。当你唯一的工具是锤子,问题最好是钉子,因为会有一些严重的锤击。当然,当开发人员获得SQL的强大功能,但没有足够小心地正确使用它时,SQL注入攻击就成为了一种确定的可能性。

另一种效果是,Android应用程序基于类似Java的语言,这种语言本身就受到保护,防止缓冲区溢出(因为所有数组访问都会被系统地检查),以及双空闲和免使用的情况(因为基于GC的内存管理)。因此,其他类型的攻击在整个漏洞中所占的比例更大。实际上,Android应用程序中存在大量SQL注入漏洞可能是其他类型攻击相对较少的结果。

票数 4
EN

Security用户

发布于 2015-05-22 17:41:11

SQLite支持准备好的查询和绑定参数,因此问题更多的是使用工具,而不是工具本身。

如果使用查询参数,就不可能将SQL注入到进程中,因为数据是与语句分开处理的。只有当开发人员做了如下这样的事情时,才会出现问题:

SQLStatement =“从用户中选择*password=‘+thePassword+’和email=‘+theEmailAddr+’;”;

这是因为它为最终用户提供了输入终止语句并添加另一个语句的密码的机会,或者指定密码工作的条件。例如,如果用户输入的密码为

代码语言:javascript
运行
复制
' or password!='fred

和一个真正的电子邮件地址,比如whosit@whatamacallit.com,那么发送到数据库的查询是:

代码语言:javascript
运行
复制
select * from users where password='' or password!='fred' and email='whosit@whatamacallit.com';

如果使用参数,则没有将新sql注入命令文本的选项,因为数据与命令是分开处理的。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/89897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档