SQL 使用 ContentProvider 时注入

SQL Injection when use ContentProvider

我开发了一个应用,我也发布到google play。但它被拒绝了,因为它使用的内容提供程序包含 SQL 注入漏洞。
我检查了提供程序 java 文件,但我不知道如何修复它!这是内容提供者代码:

我应该怎么做才能解决它?

在使用 QueryBuilder 时保护您的代码免受 SQL 注入漏洞的侵害是棘手而微妙的。

简而言之,您必须确保您的代码且只有您的代码控制查询的部分,例如用于构建最终查询的选择、投影和排序顺序。您不得让任何不受信任的内容用于您的部分查询。

这是一篇关于 SQL 内容提供商注入的文章,其中举例说明了不受信任的内容如何导致 SQL 注入漏洞,并详细介绍了 Android 开发:

https://solidgeargroup.com/sql-injection-in-content-providers-of-android-and-how-to-be-protected

它的 TL;DR 是:

  • Projection: check if the fields to query (name, size, format in the example above) exist in the table we want to get the data from.

  • Selection: use query parameterized methods.