Android应用因HostnameVerifier不安全实现遭Google Play拒审求助
问题背景
提交应用至Google Play商店时多次被拒,拒审通知内容如下:
Your app(s) are using an unsafe implementation of the hostnameverifier interface. lib.android.paypal.com.magnessdk.network.d$1 lib.android.paypal.com.magnessdk.network.e$1
项目仅通过Stripe处理支付,未自行实现HostnameVerifier接口,检索源码后确认仅Stripe依赖引入了PayPal相关组件,当前使用Stripe版本为v20.19.1。已搜索相关问题,仅找到Braintree相关案例,未获取到Stripe关联的有效解决方案。
问题分析
Stripe Android SDK v20.19.1依赖的PayPal Magnessdk版本中,存在两个匿名内部类d$1和e$1,它们实现了HostnameVerifier但未正确验证主机名(通常是直接返回true跳过验证逻辑),这种不安全的实现违反了Google Play的应用安全政策,导致审核被拒。
解决建议
升级Stripe SDK至最新稳定版
Stripe后续版本大概率会修复第三方依赖的安全问题,建议直接替换项目中的依赖声明为最新版本:implementation 'com.stripe:stripe-android:最新版本号'升级后可通过
./gradlew dependencies命令检查依赖树,确认PayPal Magnessdk的版本已更新。排除旧版Magnessdk并手动引入安全版本
若暂时无法升级Stripe,可尝试在gradle中排除存在问题的依赖,手动引入PayPal官方修复后的Magnessdk版本(需确认兼容当前Stripe版本):implementation('com.stripe:stripe-android:20.19.1') { exclude group: 'com.paypal.android.magnessdk' } implementation 'com.paypal.android.magnessdk:最新安全版本号'临时ProGuard规则(不推荐作为长期方案)
若上述方法无法快速落地,可尝试添加ProGuard规则,但此方法不保证100%通过审核,仅作应急手段:# 避免不安全实现被混淆导致审核误判,或自定义安全的HostnameVerifier覆盖实现 -keep class lib.android.paypal.com.magnessdk.network.d$1 { *; } -keep class lib.android.paypal.com.magnessdk.network.e$1 { *; }联系Stripe官方支持
直接向Stripe提交技术工单,说明问题场景、使用的SDK版本及拒审详情,获取官方针对性的修复指导或确认是否存在已知问题。
内容的提问来源于stack exchange,提问作者Keelan

