iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >AndroidApp如何防止抓包
  • 750
分享到

AndroidApp如何防止抓包

2024-04-02 19:04:59 750人浏览 八月长安
摘要

目录前言正文补充:使用证书校验总结前言 App安全非常重要,尤其是数据安全。但是我们知道通过Charles等工具可以对App的网络请求进行抓包,如果我们的数据没有进行加密,这样这些信

前言

App安全非常重要,尤其是数据安全。但是我们知道通过Charles等工具可以对App的网络请求进行抓包,如果我们的数据没有进行加密,这样这些信息就会被清除的提取出来,会被不法分子进行利用。保证数据安全有很多种方法,今天简单聊一聊如何通过简单几步防止抓包。

正文

当我们进行网络请求的时候,一般通过URL的openConnection来建立连接,代码如下:

URLConnection conn = url.openConnection()

其实openConnection这个函数还有一个版本,可以传入一个proxy对象,代码如下:

public URLConnection openConnection(Proxy proxy)
    throws java.io.IOException

这样我们通过这个函数建立连接时传入一个Proxy.NO_PROXY,即可达到防止抓包的效果,如Charles等抓包工具就无法看到我们的链接信息了,代码如下

URLConnection conn = url.openConnection(Proxy.NO_PROXY)

官方对于Proxy.NO_PROXY描述如下:


public final static Proxy NO_PROXY = new Proxy();
// Creates the proxy that represents a {@code DIRECT} connection.
private Proxy() {
    type = Type.DIRECT;
    sa = null;
}

我么可以看到NO_PROXY实际上就是type属性为DIRECT的一个Proxy对象,这个type有三种:

官方描述如下:

public enum Type {
    
    DIRECT,
    
    HTTP,
    
    SOCKS
};

这样因为是直连,所以不走代理。所以Charles等工具就抓不到包了,这样一定程度上保证了数据的安全。

当然这种方式只是通过代理抓不到包,如果直接通过路由还是可以抓包的。

补充:使用证书校验

这种方式要在app嵌入证书,以okhttp为例:

当okhttp使用X509TrustManager对服务器证书进行校验时,如果服务器证书的 subjectDN 和嵌入证书的 subjectDN 一致,我们再进行签名内容 signature 的比对,如果不一致,抛出异常。示例代码如下:

  • 首先从本地读出证书,获取一个X509Certificate
val myCrt: X509Certificate by lazy {
    getCrt(R.raw.my_ca)
}

private fun getCrt(@RawRes raw: Int): X509Certificate {
    val certificateFactory = CertificateFactory.getInstance("X.509")
    val input = ApplicationContext.resources.openRawResource(raw)
    input.use {
        return certificateFactory.generateCertificate(input) as X509Certificate
    }
}
  • 检查服务器证书时对比嵌入的证书
private fun getTrustManagerInRelease(): X509TrustManager {
    return object : X509TrustManager {
        override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String?) {}
        override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
        override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String?) {
            val myCrt: X509Certificate = myCrt
            if (chain[0].subjectDN.name == myCrt.subjectDN.name) {
                if (!myCrt.signature!!.contentEquals(chain[0].signature)) {
                    throw SSLHandshakeException("签名不符!")
                }
            }
        }
    }
}
  • 将自定义的 SSLSocketFactory 和 X509TrustManager 将入到 okhttp 客户端
    private fun getClient(ssl: SSLSocketFactory, trustManager: X509TrustManager): OkHttpClient {
        return OkHttpClient.Builder()
            .retryOnConnectionFailure(true)
            .proxy(Proxy.NO_PROXY)
            .sslSocketFactory(ssl, trustManager)
            .build()
    }

这样一来便无法通过 Drony + Charles 进行抓包了

总结

到此这篇关于Android中App如何防止抓包的文章就介绍到这了,更多相关App防止抓包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: AndroidApp如何防止抓包

本文链接: https://www.lsjlt.com/news/143959.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • AndroidApp如何防止抓包
    目录前言正文补充:使用证书校验总结前言 App安全非常重要,尤其是数据安全。但是我们知道通过Charles等工具可以对App的网络请求进行抓包,如果我们的数据没有进行加密,这样这些信...
    99+
    2022-11-13
  • 详解IOS如何防止抓包
    目录抓包原理防止抓包一、发起请求之前判断是否存在代理,存在代理就直接返回,请求失败。二、我们可以在请求配置中清空代理,让请求不走代理SSL Pinning(AFN+SSL Pinni...
    99+
    2022-05-30
    IOS 防止抓包
  • IOS怎么防止抓包
    这篇文章给大家分享的是有关IOS怎么防止抓包的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。抓包原理其实原理很是简单:一般抓包都是通过代理服务来冒充你的服务器,客户端真正交互的是这个假冒的代理服务,这个假冒的服务再...
    99+
    2023-06-15
  • Android App怎么防止抓包
    本篇内容主要讲解“Android App怎么防止抓包”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android App怎么防止抓包”吧!正文当我们进行网络请求的时候,一般通...
    99+
    2023-06-29
  • Android开发如何防止被Fiddler抓取HTTP/HTTPS数据包
          Android开发过程中需要网络访问获取数据,一般都是通过HTTP/HTTPS请求服务器获取数据;      但是HTTP/HTTPS请求很容易被别人使用一些像Fi...
    99+
    2022-06-06
    https HTTP fiddler android开发 Android
  • nodejs如何抓包工具
    这篇文章主要介绍nodejs如何抓包工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.在你的电脑桌面新建一个reptileDemo文件夹。然后进入文件夹,然后在改文件夹目录下打开...
    99+
    2022-10-19
  • wireshark如何抓组播包
    要在Wireshark中抓取组播包,你可以按照以下步骤进行操作:1. 打开Wireshark软件。2. 在Wireshark的界面上...
    99+
    2023-08-18
    wireshark
  • ubuntu如何使用wireshake抓包
    ubuntu使用wireshake抓包的方法:1、首先需要安装wireshark,可在终端命令行中使用“apt-get update”命令更新源文件后,再通过“apt-get install wireshark”命令安装wireshark;...
    99+
    2022-10-09
  • 如何理解https与抓包
    这篇文章主要介绍“如何理解https与抓包”,在日常操作中,相信很多人在如何理解https与抓包问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解https与抓包”的疑惑...
    99+
    2022-10-19
  • wireshark抓包后如何分析
    wireshark是一款流行的网络数据包分析工具,它可以用于抓取网络数据包并进行分析。下面是一些分析抓包数据的常见步骤:1. 打开w...
    99+
    2023-09-14
    wireshark
  • wireshark抓包数据如何看
    在Wireshark中查看抓包数据,可以按照以下步骤进行操作:1. 打开Wireshark软件,并选择要查看的网络接口进行抓包。2....
    99+
    2023-08-18
    wireshark
  • 如何使用tcpdump命令抓包
    如何使用tcpdump命令抓包 一、前言二、tcpdump命令使用 一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习如何使用tcpdump命令抓包。如果文...
    99+
    2023-08-31
    tcpdump 网络 服务器
  • Java如何使用Fiddler抓包工具
    这篇文章将为大家详细讲解有关Java如何使用Fiddler抓包工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 下载安装Fiddler这里强烈建议大家在官网上下载安装,在此附上链接https://w...
    99+
    2023-06-29
  • 如何防止redis雪崩
    防止redis雪崩的方案:搭建高可用redis集群。缓存层设计成高可用,防止缓存大面积故障。利用ehcache等本地缓存,对源服务访问进行限流、资源隔离、降级等操作。配置redis持久化,快速恢复缓存数据。比如RDB示例:# 时间策略sav...
    99+
    2022-10-15
  • redis如何防止死锁
    redis防止死锁的方法:锁信息设置一定是会过期超时的,不允许一个线程长期占有一个锁。同一时刻只能有一个线程获取到锁。代码示例:long expires = System.currentTimeMillis() + expireTime;S...
    99+
    2022-10-24
  • Fiddler如何抓取手机APP数据包
    Fiddler,这个是所有软件开发者必备神器!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Iphone,WindowPhone等都可以)。 第一步:下载神器Fidd...
    99+
    2022-06-04
    数据包 手机 Fiddler
  • Flutter配置代理抓包如何实现
    今天小编给大家分享一下Flutter配置代理抓包如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。背景在开发Flutte...
    99+
    2023-07-05
  • vue如何防止xss攻击
    这篇“vue如何防止xss攻击”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue如何防止xss攻击”文章吧。vue防止xs...
    99+
    2023-07-04
  • yii2如何防止xss攻击
    yii2防止xss攻击的示例代码:在对应文件中添加以下代码进行调用:function actionClean($str){$str=trim($str);$str=strip_tags($str);$str=stripslashe...
    99+
    2022-10-19
  • django如何防止xss攻击
    django防止xss攻击的方法:使用escape过滤器,无需转义时使用safe过滤器,对单一变量进行转义过滤,例如:Hello {{ a|escape }} # 转义{{a}} # 转义{{a|safe}} # 认为a安全,不进行转义利用...
    99+
    2022-10-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作