隐藏 Request/Response header 以获取来自 fiddler 或其他调试代理应用程序的请求
Hide Request/Response header for get request from fiddler or other debug proxy apps
我有一个严重依赖 api 响应的移动应用程序,我使用 charles 代理和提琴手来查看我的应用程序发出的 api 调用,我注意到其中一个 get api 调用我能够看到完整的 url 以及所有请求参数(这很好)和请求 headers(包括安全密钥)。
因此,任何人都可以使用这些信息在移动应用程序之外执行 api。我的应用程序有数百万用户,如果有人 运行 脚本来增加流量,它也会增加服务器上的负载。那么有什么方法可以保护或隐藏这些密钥吗?
我能想到的只有一种方法是
应用程序和 api 端均加密
有没有更好的方法?
您可以在您的应用程序中实施证书或 public-key 固定(对于叶子或 root-CA-certificate)。这使得攻击者更难使用代理和拦截 HTTPS 流量。然而,对于 XPosed 和 SSL-Unpinning 模块,这仍然有效。
另请记住,APK 文件可以轻松反编译,因此您不必攻击网络流量。
因此,下一步是强化您的应用,使其能够抵抗通过 XPosed 或 Frida 进行的操纵。请注意,好的硬框架要花很多钱。通常提供的保护随着成本的增加而增加。
另见 this related question。
我有一个严重依赖 api 响应的移动应用程序,我使用 charles 代理和提琴手来查看我的应用程序发出的 api 调用,我注意到其中一个 get api 调用我能够看到完整的 url 以及所有请求参数(这很好)和请求 headers(包括安全密钥)。
因此,任何人都可以使用这些信息在移动应用程序之外执行 api。我的应用程序有数百万用户,如果有人 运行 脚本来增加流量,它也会增加服务器上的负载。那么有什么方法可以保护或隐藏这些密钥吗?
我能想到的只有一种方法是
应用程序和 api 端均加密
有没有更好的方法?
您可以在您的应用程序中实施证书或 public-key 固定(对于叶子或 root-CA-certificate)。这使得攻击者更难使用代理和拦截 HTTPS 流量。然而,对于 XPosed 和 SSL-Unpinning 模块,这仍然有效。
另请记住,APK 文件可以轻松反编译,因此您不必攻击网络流量。
因此,下一步是强化您的应用,使其能够抵抗通过 XPosed 或 Frida 进行的操纵。请注意,好的硬框架要花很多钱。通常提供的保护随着成本的增加而增加。
另见 this related question。