V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cevincheung
V2EX  ›  程序员

移动 APP 需要严格防控抓包吗?

  •  
  •   cevincheung ·
    cevin · 2014-04-24 11:35:41 +08:00 · 5877 次点击
    这是一个创建于 3896 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前是这么搞的。

    服务端:
    1.接口只接受POST请求
    2.接口必须HTTPS访问

    移动端:
    SSL证书内置,SSL-Pinning验证证书。不匹配不发请求。


    APP需要严格防控抓包么?如此方案除了反编译源码外,还有被抓包的可能吗?
    17 条回复    1970-01-01 08:00:00 +08:00
    arron
        1
    arron  
       2014-04-24 12:02:08 +08:00
    获取客户端那个SSL证书内容不难,SSL-Pinning是比对证书吧?然后在代理上验证这个证书就成。(没有测试)
    感觉这种使用公共的方法都容易被破的。
    WildCat
        2
    WildCat  
       2014-04-24 12:02:30 +08:00 via iPhone
    搭车问下hybrid app的相同问题。
    missdeer
        3
    missdeer  
       2014-04-24 12:22:32 +08:00
    叹气,要怎样才能有效防止呢
    dong3580
        4
    dong3580  
       2014-04-24 12:33:11 +08:00
    @cevincheung
    不防止怎么样呢?可以方便粉丝移植到更多平台。
    当然前提若你的是收费app,那就严格控制吧。
    sanddudu
        5
    sanddudu  
       2014-04-24 12:39:22 +08:00
    ipa跟zip差不多,如果把证书放进去跟直接放出来没差别
    另外真的要找接口的话反编译都不是难事,一般挖的出来证书密码
    但是如果你的证书密码是123456,那你做什么措施都没用了
    yautou
        6
    yautou  
       2014-04-24 13:01:53 +08:00
    想到一个不知道实际可行不。
    记录发起请求的时间戳,经过某一不可逆的算法加密,两者都传给服务器;
    服务器对时间戳离谱的请求直接舍弃,对有效的时间戳,用同样算法加密一次,与收到的密文比较,判断是否接受请求。
    tang3w
        7
    tang3w  
       2014-04-24 13:53:19 +08:00
    即使进行了证书验证,越狱后的系统是不安全的,也可以被抓包。客户端和服务端协商一个非对称加密机制,对敏感数据加一下密就行了。
    elden
        8
    elden  
       2014-04-24 14:39:27 +08:00
    Certificate Pinning主要是确保公共网络的SSL通讯安全,并不能防止有心人抓包。 比如在越狱后的iOS,只需简单交换[NSURLConnectionDelegate connection:canAuthenticateAgainstProtectionSpace:] 或 [NSURLSessionDelegate URLSession:didReceiveChallenge:completionHandler:]的实现即可破解。
    JoyNeop
        9
    JoyNeop  
       2014-04-24 15:21:42 +08:00
    @sanddudu 233333333333333333333333333333333333333333333333333333333333333
    akira
        10
    akira  
       2014-04-24 17:47:09 +08:00
    把心思花在做好产品上面吧。

    一切防范手段都是防君子不防小人的。
    mornlight
        11
    mornlight  
       2014-04-24 18:18:17 +08:00
    个人觉得应该把防御的重点放到服务端上,不相信任何客户端发来的数据。所有放到客户本地的东西理论上都是不安全的
    orzfly
        12
    orzfly  
       2014-04-24 18:56:12 +08:00
    @sanddudu 2333333333333333333333333333333333333333333333333333333333333333
    xiasix
        13
    xiasix  
       2014-04-24 19:54:44 +08:00
    3des加密 ios和服务端约定好密钥就可以了嘛 传输都是一堆字符串 你又不知道密钥 你解啊 你解啊 你解啊
    janxin
        14
    janxin  
       2014-04-25 00:10:53 +08:00 via iPad
    看你的应用类型,有些软件有特殊要求,比如金融软件有合规要求
    devHang
        15
    devHang  
       2014-04-25 12:55:44 +08:00
    你把接口加密就行了,当然要自己设计这中API。比如跳字符串什么的
    wwqgtxx
        16
    wwqgtxx  
       2014-04-25 19:10:48 +08:00 via Android
    没用的,只要有root权限,都能直接替换系统类库,防不胜防
    TangMonk
        17
    TangMonk  
       2014-04-25 22:36:44 +08:00
    防不了的,移动 APP 和网页一样的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:11 · PVG 04:11 · LAX 12:11 · JFK 15:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.