- SQL注入
- Zip解压路径穿越
- 通过任意文件写执行代码
- native层安全
- 可信代码加载
1.SQL注入
成因:开发过程中对传入的SQL查询参数未做转义,导致恶意的输入被当做SQL执行。
危害:(1)不符合语法的查询导致拒绝服务(2)对数据进行恶意的增删改查(3)通过load_extension加载恶意代码
常见风险点:(1)所有SQL语句不是常量字符串的查询 (2)通过Content Provider暴露的数据库接口
可能出现SQL注入的方法:
delete
execSQL
insert
insertOrThrow
insertWithOnConflict
query
queryWithFactory
replace
rawQuery
rawQueryWithFactory
update
updateWithOnConflict
除execSQL,rawQuery方法的sql参数外,query方法whrer,groupBy,having,orderBy,limit参数也会被直接当做SQL查询的一部分执行。
参数化查询
rawQuery等具有String[]selectionArgs参数的方法支持参数化查询。
在SQL语句中将参数使用占位符?代替,将需要绑定的参数使用数组传入,可避免因为拼接查询而带来的注入问题。
Cursor cursor =db.rawQuery("SELECT * FROM sqlitedb WHRER user=\&