android中是怎样防止sql注入的?

author author     2023-03-18     533

关键词:

在JavaWeb中有PreparedStatement可以防止SQL注入,但是在android中有没有类似的功能呢?现在要做一个查找的功能,将本地SQLite数据库中的带有%的字段查找出来,如果我使用 字段 like "%"会直接将所有的结果都打印出来了,这是不对的。应该是输出带有%的字段,而不是打印所有字段

COPY过来有什么意思。。。。。。。 ----------------------------- 要防止SQL注入其实不难,你知道原理就可以了。 所有的SQL注入都是从用户的输入开始的。如果你对所有用户输入进行了判定和过滤,就可以防止SQL注入了。用户输入有好几种,我就说说常见的吧。 文本框、地址栏里***.asp?中?号后面的id=1之类的、单选框等等。一般SQL注入都用地址栏里的。。。。如果要说怎么注入我想我就和上面的这位“仁兄”一样的了。 你只要知道解决对吗? 对于所有从上一页传递过来的参数,包括request.form 、request.qurrystring等等进行过滤和修改。如最常的***.asp?id=123 ,我们的ID只是用来对应从select 里的ID,而这ID一般对应的是一个数据项的唯一值,而且是数字型的。这样,我们只需把ID的值进行判定,就可以了... 参考技术A

    Android中的数据多是存储在Sqlite数据库中,这个文件一般在手机的系统路径如:/data/data/com.xx.yy/databases/zzz.db。其中com.xx.yy为包名。zzz.db名字随意,为数据库文件

    在安卓应用程序中,有一个非常重要的组件,即“content provider”

    当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据

  3.Sql注入问题

综合上面的内容,我们可以看到,query里至少两个参数我们可控,一个是projection,一个是selection,这两个都会影响SQL与的组成,也就为注入提供了可能。

这里以某app为例(虽然感觉漏洞影响有限,但是为了尊重厂商,请允许打码处理),该app对外暴露了一个content provider,uri为:content://com.masaike.mobile.downloads/my_downloads,其中com.masaike.mobile为包名,downloads为库的名字,my_downloads为表名(不一定,可自定义的哦)。

现在语句这么写:

Cursor cursor = contentResolver.query("content://com.masaike.mobile.downloads/my_downloads", new String[]"_id'","method",null, null, null);

其中_id和method为两个字段名,我们在_id后面加个单引号,运行下看logcat内容:

从上图很容易看出来,SQL语句因为有个单引号,导致出错。所以注入是存在的。

而如果我们修改projection的内容为"* from sqlite_master where type='table';--",这样子即在闭合后面查询的情况下显示出来全部的表名。当然也可以构造其他语句了。

参考技术B 1. android里也有参数化查询的, 可防止SQL 注入2. select * from table1 where col1 like '%\%%' ESCAPE '\'; 查看原帖>>本回答被提问者采纳 参考技术C 安卓系统相当于linux 获取了root相当于获取管理员权限 SQL的注入是需要管理员权限许可才可执行,否则不可 参考技术D 不允许用户输入特殊符号,从根本上防止注入

如何防止Android中的SQL注入?

】如何防止Android中的SQL注入?【英文标题】:HowtopreventSQLinjectioninAndroid?【发布时间】:2019-10-2415:14:36【问题描述】:安全警报您的应用包含SQL注入漏洞。有关详细信息,请参阅此Google帮助中心文章。易受攻击的类:provider/FormsPr... 查看详情

使用“AS QUERY”防止 SQL 注入

...问题描述】:我有以下代码,看起来很标准,但是在查询中是另一个SQL语句,因此“ASQUERY”位于SQL字符串的末尾。我想知道是否有一种复杂的方法来参数化以下SQL命令,而不是将整个查询连接在一起。我能想到的唯一解决方案... 查看详情

我们如何防止 MySQL 的 SQL 注入?

...但是如果我想从MySQL方面阻止它呢?你有什么主意吗?我怎样才能实现它?【问题讨论】:这不是可以 查看详情

参数化sql查询语句

怎样防止sql注入?语句是select*fromxinxiwhereid=XX,怎样防止注入?怎样对这句话进行参数化?使用ADO.NET的parameter来构造查询语句,运行时会自动检查参数类型是否正确,能够有效地防止SQLinjectionattackstring="select*fromxinxiwhereid=@param&... 查看详情

如何防止sql注入?防止sql注入方法介绍

一、什么叫SQL注入攻击?sql注入简介SQL注入是较为普遍的互联网攻击方法,它并不是通过电脑操作系统的BUG来完成攻击,而是对于程序编写时的疏漏,利用SQL语句,达到无帐号登录,乃至改动数据库的目的... 查看详情

struts2防止sql注入

  struts2不涉及sql,要防止sql注入,只需要你在持久层创建Statement对象时,调用Connection对象的prepareStatement方法创建出PreparedStatement对象,用该对象来发送sql语句即可。该对象发送的sql是预编译的,所以可以防止sql注入。另外如... 查看详情

使用休眠防止 SQL 注入

】使用休眠防止SQL注入【英文标题】:SQLinjectionpreventionwithhibernate【发布时间】:2013-05-2407:55:43【问题描述】:我有一个现有代码,其中应用程序根据许多条件生成不同的sql,并通过休眠会话createSQLQuery()执行它们。在这里,参数... 查看详情

使用休眠防止 SQL 注入

】使用休眠防止SQL注入【英文标题】:SQLinjectionpreventionwithhibernate【发布时间】:2013-05-2407:55:43【问题描述】:我有一个现有代码,其中应用程序根据许多条件生成不同的sql,并通过休眠会话createSQLQuery()执行它们。在这里,参数... 查看详情

防止JPQL查询sql注入

】防止JPQL查询sql注入【英文标题】:PreventJPQLquerysqlinjection【发布时间】:2019-07-3005:21:24【问题描述】:我被告知以下查询不安全,因为来自前端输入字段的参数:searchFor可用于SQL注入。请告知在以下代码中防止SQL注入的最佳解决... 查看详情

mybatis是如何防止sql注入?

sql注入发生的时间,sql注入发生的阶段在sql预编译阶段,当编译完成的sql不会产生sql注入采用jdbc操作数据时候Stringsql="updateft_proposalsetid="+id;PreparedStatementprepareStatement=conn.prepareStatement(sql);prepareStatement.executeUpdate();prepar 查看详情

防止sql注入的包

】防止sql注入的包【英文标题】:Packageforpreventionofsqlinjection【发布时间】:2009-03-2619:06:50【问题描述】:是否有任何已经编写的pl/sql包来处理所有阻止SQL注入的场景。如果有人知道这样的包,请告诉我。感谢您的帮助【问题讨... 查看详情

防止 Ibatis 中的 SQL 注入

】防止Ibatis中的SQL注入【英文标题】:PreventingSQLInjectionInIbatis【发布时间】:2011-04-2501:50:59【问题描述】:Ibatis中是否有任何内置功能可以帮助防止SQL注入攻击?我不是在寻找Ibatis之外的方法列表来执行此操作,我只是想知道Iba... 查看详情

试图防止sql注入

】试图防止sql注入【英文标题】:Tryingtopreventsqlinjection【发布时间】:2013-08-3123:18:41【问题描述】:我设置了一个下拉框,允许用户选择经济数据的要求。我试图通过使用mysqli来防止sql注入,但我没有运气。这是我的代码:$gYear... 查看详情

PHP 防止 SQL 注入

】PHP防止SQL注入【英文标题】:PHPPreventSQLInjection【发布时间】:2018-03-2301:46:57【问题描述】:我正在尝试使用带有PDO的PHP来防止SQL注入。我用这个作为参考。http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers。我的代码没有给我任何... 查看详情

@> 在 SQL 中是啥意思

】@>在SQL中是啥意思【英文标题】:Whatdoes@>meaninSQL@>在SQL中是什么意思【发布时间】:2019-05-2316:22:06【问题描述】:您好,我有在select语句中使用@>的代码。我需要将查询从redash对应项更改为bigquery。我已经搜索了@,... 查看详情

正则表达式检测基本 SQL 注入,但不能作为防止 SQL 注入的手段

】正则表达式检测基本SQL注入,但不能作为防止SQL注入的手段【英文标题】:RegexToDetectBasicSQLInjections,ButNotAsAMeanstoPreventSQLInjections【发布时间】:2015-09-0918:13:46【问题描述】:首先让我说我是我为确保SQL注入攻击失败而采取的措... 查看详情

准备好的语句如何防止 SQL 注入攻击?

】准备好的语句如何防止SQL注入攻击?【英文标题】:HowcanpreparedstatementsprotectfromSQLinjectionattacks?【发布时间】:2012-01-0523:53:20【问题描述】:preparedstatements如何帮助我们防止SQLinjection攻击?***说:准备好的语句可以抵御SQL注入... 查看详情

防止 SQL 注入的好方法是啥? [复制]

】防止SQL注入的好方法是啥?[复制]【英文标题】:WhataregoodwaystopreventSQLinjection?[duplicate]防止SQL注入的好方法是什么?[复制]【发布时间】:2021-08-2002:39:55【问题描述】:我必须为我的OJT公司编写一个应用程序管理系统。前端使... 查看详情