V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
INT21H
V2EX  ›  问与答

客户端App到服务器端数据,加密?

  •  
  •   INT21H · 2012-12-26 23:08:41 +08:00 · 6755 次点击
    这是一个创建于 4379 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有一个App需要调用服务器的API,那么在调用HTTP请求的时候,需要POST数据过去,在不走HTTPS情况下,这些FORMDATA很容易被截获。。

    所以,需要加密?用什么加密算法比较好?最好在ObjC里和Python都有比较成熟的库。
    17 条回复    1970-01-01 08:00:00 +08:00
    cabbala
        1
    cabbala  
       2012-12-26 23:10:23 +08:00   ❤️ 1
    走HTTPS就好了,服务端和App都是零成本,加几行代码的事情
    ewangke
        2
    ewangke  
       2012-12-27 00:30:15 +08:00
    @cabbala https也照样会被中间人截取的
    cabbala
        3
    cabbala  
       2012-12-27 01:55:25 +08:00 via Android
    @ewangke
    phuslu
        4
    phuslu  
       2012-12-27 01:57:22 +08:00
    @ewangke 验证一下证书即可。一般来说具体的 httpclient 的库都有这个功能。
    ewangke
        5
    ewangke  
       2012-12-27 16:24:25 +08:00
    @cabbala
    @phuslu
    http://mitmproxy.org/
    这种东西有作用是因为服务器端没有验证么?
    phuslu
        6
    phuslu  
       2012-12-27 16:26:23 +08:00
    @ewangke 是客户端没有验证.
    java/python 的很多 httpclient 的库自带了验证选项的, 使用它既可.
    binux
        7
    binux  
       2012-12-27 16:29:17 +08:00
    ewangke
        8
    ewangke  
       2012-12-27 16:35:09 +08:00
    @phuslu 即使在设备上手动安装了证书,客户端代码验证依然有效么?
    @binux 想说什么
    binux
        9
    binux  
       2012-12-27 16:40:35 +08:00
    @ewangke This CA is used for on-the-fly generation of dummy certificates for SSL interception. Since your browser won't trust the mitmproxy CA out of the box (and rightly so), you will see an SSL cert warning every time you visit a new SSL domain through mitmproxy.
    phuslu
        10
    phuslu  
       2012-12-27 16:42:07 +08:00
    @ewangke 这要看具体 app 使用 httpclient 的方式. 默认的话, 导入证书就能绕过验证.
    但是如果 app 很注重安全, 就会自带一个 cert.crl , 只认可这个列表里面的 Root CA 颁发的证书.
    ewangke
        11
    ewangke  
       2012-12-27 16:48:17 +08:00
    @binux 证书可以手动安装啊
    @phuslu cert.crl是啥,iOS里没听说过
    cabbala
        12
    cabbala  
       2012-12-27 18:15:40 +08:00 via Android
    @ewangke 自己安装一个恶意证书监听自己? 你还真能想出来。。。

    攻击者要是有能给你的设备添加证书的权力,那你用毛加密手段都无效。。。
    ewangke
        13
    ewangke  
       2012-12-27 18:28:47 +08:00
    @cabbala
    监听后修改HTTP请求的数据,iOS Game Center里很多高分都是这么来的,同理可以修改自己多人游戏账号的数据。

    最近发现V2EX上很多人,尤其是你,火气很大。
    notedit
        14
    notedit  
       2012-12-27 18:32:16 +08:00
    notedit
        15
    notedit  
       2012-12-27 18:36:36 +08:00
    基本思路是客户端和服务端各保存一个私钥 客户端用私钥加密 服务端再用私钥解密
    hidden
        16
    hidden  
       2012-12-27 19:43:58 +08:00
    正常情况无需加密直接http,你的app不是那么受欢迎是每人来拿你数据玩的
    要做的相对安全点儿就用https,客户端一般是默认要验证的https的
    要做得再严密点儿,就用AESCrypt去对称加密,只要客户端代码不被破,那个key不被别人知道就安全。
    humingchun615
        17
    humingchun615  
       2014-02-25 10:56:18 +08:00
    @notedit 私钥加密 公钥解密
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5515 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 05:55 · PVG 13:55 · LAX 21:55 · JFK 00:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.