Android平台防止SQL注入

sql注入其实就是在某些不安全控件内输入sql或其他数据库的一些语句,从而达到欺骗服务器执行恶意代码影响到数据库的数据。防止sql注入,可以在接受不安全空间的内容时过滤掉接受字符串内的特殊字符,那么他不再是一条sql语句,而是一个类似sql语句的字符串,执行后也不会对数据库有破坏。 如:—–

username = request("username") //获取用户名 这里是通过URL传值获取的

password = request("password") //获取密码 也是通过URL传值获取的

此时sql="select * from user where username = '" & username & "' and password = '" & password & "'"

如果某个人知道某个用户名是admin,常常有人网站的管理员用户名就是admin,这是密码可以选用’or 1 or ‘,

那么sql="select * from userlist where username = 'admin' and password = '' or 1 or ''"

显然1是恒真的,那么验证密码就通过了。成功登陆后台管理后,接下来就可以任意进行破坏行为,如篡改网页、上传木马、修改、泄漏用户信息等,并进一步入侵数据库服务器,后果是十分严重的。

那么怎么防止SQL注入呢?

所有的SQL注入都是从用户的输入开始的。如果你对所有用户输入进行了判定和过滤,就可以防止SQL注入了。 防止的方式比较多,比如可以限制username,password中出现”’”等特殊字符,一般网站都是只允许数字,字符,下划线的组合,这可以通过javascript验证。也可以采取用存储过程代替sql拼接等等。

那么如何使APP的数据库使用更安全?
  1. 不直接使用原始SQL语句,而是使用具备预编译参数能力的SQL API;
  2. 如果一定要使用原始SQL语句,语句中不应有进行任何字符串拼接的操作;
  3. 如非必要,记得主动调用SQL API关闭动态加载扩展的能力;
  4. 使用数据加密(如SqlCipher)扩展SQLite数据存储的安全性,之前博客有专门介绍SqlCipher的使用的。详见:http://blog.csdn.net/tobi2015/article/details/51077314
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值