美文网首页
ReactNative 中使用SSL Pinning防止中间人攻

ReactNative 中使用SSL Pinning防止中间人攻

作者: liuxingzi | 来源:发表于2021-03-18 20:15 被阅读0次

    如果你看懂了标题的话,我就不多解释这是做什么用的了,
    如果你没有看懂标题,估计也不会点进来了。

    一句话,就是在使用Charles抓包时,看不到网络请求。

    RN侧使用 https://github.com/MaxToyberman/react-native-ssl-pinning 组件

    其底层
    iOS是用AFNetworking 实现的
    安卓是用实现的

    使用方法

    1、生成证书文件

    openssl s_client -connect google.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer
    
    

    其中 google.com 为你要用到的域名

    2、iOS
    把https.cer文件放到项目中,只要能打包进去就行。

    3、RN侧
    使用方法

    import { fetch } from 'react-native-ssl-pinning'
    
    fetch("https://XXXX.com/test", {
        method: "GET",
        // body: body,
        // // your certificates array (needed only in android) ios will pick it automatically
        pkPinning: true,
        sslPinning: {
          certs: ["https"] // your certificates name (without extension), for example cert1.cer, cert2.cer
        },
        headers: {
          Accept: "application/json; charset=utf-8", "Access-Control-Allow-Origin": "*",
        }
      })
        .then(response => {
          console.log(`response received ${JSON.stringify(response)}`)
        })
        .catch(err => {
          console.log(`error: ${err}`)
        })
    

    结束了,
    可以使用Charles 去抓包试一下,如果不能看到真实的请求数据,就OK了

    参考:
    [1] APP安全机制(十七) —— 阻止使用SSL Pinning 和 Alamofire的中间人攻击
    AFNetworking设置SSL链接

    相关文章

      网友评论

          本文标题:ReactNative 中使用SSL Pinning防止中间人攻

          本文链接:https://www.haomeiwen.com/subject/egppcltx.html