本文面向的是发布的应用中存在 SQL 注入漏洞的开发者。
最新动态
您的一个或多个应用中存在必须修复的 SQL 注入漏洞。请参阅 Play 管理中心内的通知。在 Play 管理中心内显示的截止日期过后,系统可能会将所有包含未修复安全漏洞的应用从 Google Play 中移除。
需要采取的行动
- 登录您的 Play 管理中心,然后转到“提醒”部分,了解受影响的应用以及解决这些问题的截止日期。
- 更新受影响的应用并修复该漏洞。
- 提交受影响应用的更新版本。
重新提交后,我们会重新审核您的应用。审核过程可能需要几个小时才能完成。如果应用通过审核并成功发布,便无需进一步操作。如果应用未通过审核,则新版应用将无法发布,您会收到电子邮件通知。
更多详细信息
在导出的 ContentProviders
中实现 query
、update
和 delete
时,如果将未经处理的输入传递给 SQL 语句,就会容易受到 SQL 注入攻击。恶意应用可能会提供蓄意创建的输入,进而访问隐私数据或损坏数据库内容。您可以通过以下方式解决此问题:
如果受影响的 ContentProvider
无需供其他应用使用,请执行以下操作:
- 您可以在清单中修改受影响的
ContentProvider
的<provider>
标记,以便设置android:exported="false"
。这样可以阻止其他应用将 Intent 发送到受影响的ContentProvider
。 -
您还可以设置
android:permission
属性,将permission
设为android:protectionLevel="signature"
,从而阻止其他开发者编写的应用将 Intent 发送到受影响的ContentProvider
。
如果受影响的 ContentProvider
需要供其他应用使用,请执行以下操作:
- 您可以通过结合使用严格模式和投影映射来防止
SQLiteDatabase.query
受到 SQL 注入攻击。严格模式可防止出现恶意选择子句,投影映射可防止出现恶意投影子句。您必须同时使用这两项功能来确保查询安全无虞。 - 您可以通过以下方式来防止
SQLiteDatabase.update
和SQLiteDatabase.delete
受到 SQL 注入攻击:使用以“?”
作为可替换参数的选择子句,并使用一组单独的选择参数。不应使用不信任的输入构建选择子句。
我们随时为您提供帮助
如果您针对此漏洞有技术方面的问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。有关您需要采取哪些步骤来解决此问题的说明,请与我们的开发者支持团队联系。