首页 > 解决方案 > 如何防止Android中的SQL注入?

问题描述

安全警报

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

弱势阶层:

提供者/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 注入安全警报。

标签: javaandroidsql-injection

解决方案


请在此处阅读有关 SQL 注入的更多信息。

您永远不应该将原始(未经处理的)用户输入放入 SQL 查询中。
我建议使用处理这些事情并防止可能的 SQL 注入的库。我个人使用Room,但也看看Requery


推荐阅读