我的设备中有一个支付应用程序,我的应用程序连接到该应用程序的服务以获得启动支付活动的挂起意图,然后在 onActivityResult() 方法中收听结果。(类似于应用内购买场景)
我为付款意图设置了包裹名称。但你知道,这并不能保证支付应用程序是可信的。如果有人通过未知来源安装具有相同包名和相同aidl-service 实现的虚假应用程序,那么它可以给我未决意图和网络钓鱼我的用户信息。
我使用某种机制验证支付结果,并且只保护我的应用程序免受虚假支付结果的影响,但我的应用程序用户在钓鱼应用程序中输入他们的数据。(这一段说我的问题是不信任支付应用程序的响应,我的问题是在启动他们的活动之前信任支付应用程序)
我知道一些可以检查其他应用程序签名和公钥的方法。如果Android 操作系统保证公钥和签名是只读的并且与已安装的应用程序匹配,我可以依赖它并在向其发送意图之前检查支付应用程序的公钥。但我猜那些不是只准备好的并且只检查匹配在安装。
防止网络钓鱼攻击的任何建议(类似或不同的方法)?
更新:大约 50% 的应用程序用户直接从我的公司网站安装应用程序(未知来源)。