如何防止Android中的SQL注入?

时间:2019-06-10 08:04:48

标签: java android sql-injection

安全警报

您的应用程序包含一个SQL注入漏洞。有关详细信息,请参阅此Google帮助中心文章。

弱势阶层:

provider / FormsProvider;->查询

影响APK版本6。

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
            String sortOrder) {
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        qb.setTables(FORMS_TABLE_NAME);

        switch (sUriMatcher.match(uri)) {
            case FORMS:
                qb.setProjectionMap(sFormsProjectionMap);
                break;

            case FORM_ID:
                qb.setProjectionMap(sFormsProjectionMap);
                qb.appendWhere(FormsColumns._ID + "=" + uri.getPathSegments().get(1));
                break;

            default:
                throw new IllegalArgumentException("Unknown URI " + uri);
        }

        // Get the database and run the query
        SQLiteDatabase db = mDbHelper.getReadableDatabase();
        Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder);

        // Tell the cursor what uri to watch, so it knows when its source data changes
        c.setNotificationUri(getContext().getContentResolver(), uri);
        return c;
    }

请帮助我。如何防止来自Google Play控制台的SQL注入安全警报。

1 个答案:

答案 0 :(得分:0)

请阅读有关SQL注入here的更多信息。

永远不要将原始(未经消毒的)用户输入放入SQL查询中。
我建议使用可处理此问题并防止可能的SQL注入的库。我个人使用Room,但也请参阅Requery