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

如何设计一个安全的登录系统

  •  
  •   AToMatriX · 2015-12-20 09:04:15 +08:00 · 2645 次点击
    这是一个创建于 3064 天前的主题,其中的信息可能已经有所发展或是发生改变。

    客户端与服务器端如何做到安全地传输数据,请考虑以下两点:

    1. 可能有第三方会话劫持,通过嗅探、伪装成功登录系统;
    2. 用户量,并发量大。
    8 条回复    2015-12-20 12:39:11 +08:00
    kidding
        1
    kidding  
       2015-12-20 09:12:34 +08:00   ❤️ 1
    请自己完成作业,谢谢。(Just kidding.)
    gamexg
        2
    gamexg  
       2015-12-20 09:19:52 +08:00
    上 tls( https) 即可。
    对了别跟 12306 一样连 100 元都不舍得。
    VeryEase
        3
    VeryEase  
       2015-12-20 09:31:36 +08:00
    楼上说的,上 tls 就够用了,不想买证书,自己简单实现客户端和服务端之间的非对称加密和对称加密交互过程,不过真没必要这么省钱。

    第二点说起来就太复杂了,建议还是先自己了解一些大厂的开源项目,看看别人怎么做的,借鉴一下就可。
    AToMatriX
        4
    AToMatriX  
    OP
       2015-12-20 10:26:49 +08:00
    @kidding 哈哈,这真不是作业,只是与朋友聊起
    多谢 @gamexg @VeryEase , 原以为弄 CA 证书有多复杂,这 12306 还真节约经费啊。。
    @VeryEase 客户端和服务端之间的非对称加密和对称加密交互过程,这个被嗅探到好像也是没什么用的吧,第三方拿到客户端发出的数据再转发到服务器也是比较难识别
    VeryEase
        5
    VeryEase  
       2015-12-20 11:24:55 +08:00
    呵呵,实际上肯定不会这么简单。 我所了解的,一般服务端还会配合部署硬件防火墙,业务服务还会有自带的安全机制,比如白名单,黑名单,安全组,会话校验之类的。
    gamexg
        6
    gamexg  
       2015-12-20 12:30:54 +08:00
    @AToMatriX 是可以转发,但是无法解密内容,毫无用处。程序内置服务器证书(公钥),也可以购买正规的证书,这样第三方在没有服务器私钥的情况下无法解密内容的。

    目前 go 写 tls 程序实在太简单了,和普通 tcp 程序基本没区别。相关文档: https://golang.org/pkg/crypto/tls/#Listen

    测试时可以用 wosign 提供的的免费 https(ssl 、 tls) 证书。

    对了, https 其实就是 http 协议外面套了一层 tls 加密协议,自己的私有协议也可以套 tls 这层壳的。
    hyuwang
        7
    hyuwang  
       2015-12-20 12:32:18 +08:00
    HSTS ?
    wbsdty331
        8
    wbsdty331  
       2015-12-20 12:39:11 +08:00
    你们觉得 gpg 如何?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3314 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:46 · PVG 19:46 · LAX 04:46 · JFK 07:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.