最近,我收到了Forify的一份报告,其中包含有关我的Android应用程序的许多安全问题。 我不明白其中之一:访问控制:数据库。 详细说明:
BuicDAO.java,第42行(访问控制:数据库)强化优先级: 高文件夹高王国:安全功能摘要:没有正确的 访问控制,BuicDAO.java中的方法insert()可以执行SQL 第42行的声明包含攻击者控制的主键, 从而允许攻击者访问未经授权的记录。
水槽: BuicDAO.java:42
42 // synchronized(db)
43 {
44 myNewKEY = (int) this.db.insert("TableBUIC", null, values);
45 }
46 }
这是我的代码:
BuicDAO.java
public void insert()
{
int myNewKEY;
ContentValues values = new ContentValues();
values.putNull("KEY");
values.put("Name", "Me");
42 // synchronized(db)
43 {
44 myNewKEY = (int) this.db.insert("TableBUIC", null, values);
45 }
46 }
这是问题所在? 我不知道在Android / sqlite上进行安全插入的正确方法是什么。
答案 0 :(得分:2)
主键由数据库选择(因为您将其设置为NULL
),使用ContentValues
可以防止SQL注入攻击。
强化是完全错误的。 甚至一个愚蠢的计算机算法也可以证明你的代码是安全的,所以这不仅仅是一个过分热心的警告,而是Fortify中的一个错误。