当我设置 Charles 进行调试时,我可以看到所有流量,这是一个很好的部分。但 Charles 显示了我发布的生产应用程序的所有流量,这一点都不好。
有什么方法可以阻止 Charles 在不使用 SSL Pinning 的情况下捕获我的生产应用程序的所有流量?
请帮帮我。
提前致谢!
不 - 没有办法做到这一点,实际上即使 SSL 固定也不能保证这一点。
更一般地说:如果用户有足够的决心和知识,那么“不可能”对用户完全保密应用程序在用户设备上执行的操作的详细信息。你可以让它变得更加困难,但这是一场你永远不会“赢”的猫捉老鼠的游戏。归根结底,控制设备的是用户,而不是您。 在简单的情况下,他们只需安装自己的证书颁发机构,然后拦截本地网络或类似网络上的流量。如果没有证书固定,您就无法克服此问题,而通过证书固定来阻止此问题将使您的应用程序在许多需要对所有流量进行此类网络扫描的企业网络上无法使用。
在更高级的情况下,他们可以使用越狱设备,然后他们可以直接修改您的应用程序(使用 Frida,或者提取构建的应用程序并自行修改),这样他们就可以禁用您添加的任何保护。
应用程序试图击败完全控制设备的用户是不可能的,也不是一个好主意。相反,您应该确保您的应用程序源代码中没有存储任何关键机密,也没有在流量中可见,您应该假设您发送的所有流量对用户可见,并且您应该将服务器配置为不信任传入的应用程序流量默认情况下。
如果您在服务器上使用适当的安全机制,那么用户可以看到来自自己设备的流量应该不是问题。这与网页一直使用的模型相同:它们在浏览器中运行(用户可以看到所有内容的不受信任的环境),但将流量发送到服务器,服务器对请求进行身份验证。