1

最近我收到了 Forify 的报告,其中包含有关我的 Android 应用程序的许多安全问题。我不明白其中之一:访问控制:数据库。细节:

BuicDAO.java, line 42 (Access Control: Database) Fortify Priority: High Folder High Kingdom: Security Features 摘要:在没有适当的访问控制的情况下,BuicDAO.java中的insert()方法可以在第42行执行包含攻击者的SQL语句- 控制主键,从而允许攻击者访问未经授权的记录。

接收器: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 上进行安全插入的正确方法是什么。

4

1 回答 1

2

主键由数据库选择(因为您将其设置为NULL),并且使用ContentValues可以防止 SQL 注入攻击。

Fortify 是完全错误的。甚至一个愚蠢的计算机算法也可以证明你的代码是安全的,所以这不仅仅是一个过分的警告,而是 Fortify 中的一个错误。

于 2013-05-05T09:50:51.203 回答