作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
渗透测试我们的 Android 应用程序的团队提出了一项建议,即我们应该固定服务器的 IP 地址以及已经固定的证书,以增加一层防御以防止中间人攻击。我的问题是除了已经固定的证书外,我如何将服务器 IP 地址固定在 Android 应用程序上。
目前我正在使用okhttp
。我已经实现了证书固定,这是在使用 okhttpClientBuilder
创建单例 okhttpClient
时完成的。代码如下所示。我想以某种方式将后端服务器 IP 地址固定添加到此构建器。
val client = OkHttpClient.Builder()
.addInterceptor { chain ->
val request = chain.request().newBuilder()
.addHeader(apiKeyHeader, apiKey)
.header("Content-Type", "application/json")
.build()
chain.proceed(request)
}.addInterceptor(loggingInterceptor)
.certificatePinner(CertificatePinUtil.createOkHttpCertPinner())
.build()
有关如何实现 IP 固定的任何建议都会有所帮助。理想情况下,我们会使用 OkhttpClientBuilder
或 android 安全配置来执行此操作。我不想对响应进行任何手动检查。
最佳答案
您可以实现自己的 Dns,它具有 Dns 的硬编码结果。
override fun lookup(hostname: String): List<InetAddress> {
val override = overrides[hostname]
if (override != null) {
logger.fine("Using Dns Override ($hostname): $override")
return listOf(InetAddress.getByName(override))
}
return dns.lookup(hostname)
}
关于android - 如何在我的 Android 应用程序上固定 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56762551/
我是一名优秀的程序员,十分优秀!