V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
css3
V2EX  ›  程序员

一些重要系统的 http 接口,为什么没有前端参数加密呢?

  •  
  •   css3 · 2019-10-12 17:21:34 +08:00 · 5627 次点击
    这是一个创建于 1873 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如,12306 外挂这么多,为啥没有前端加密,后端解密呢, 后端响应也加密呢,小白,纯属好奇,问一下各位大佬😂轻喷

    32 条回复    2019-10-23 17:06:32 +08:00
    KyonLi
        1
    KyonLi  
       2019-10-12 17:33:11 +08:00
    右键检查
    drlalll
        2
    drlalll  
       2019-10-12 17:35:00 +08:00
    前段再怎么加密代码还不是被看得清清楚楚的。
    Vegetable
        3
    Vegetable  
       2019-10-12 17:36:49 +08:00
    可以,但没必要。
    增加那点开发成本和巨大的收益比起来,根本没有意义。
    msg7086
        4
    msg7086  
       2019-10-12 17:36:51 +08:00
    你都说了前端加密了。前端的代码都在浏览器,加密不加密有什么区别吗?都是用户控制的设备和环境。
    css3
        5
    css3  
    OP
       2019-10-12 17:39:24 +08:00
    @drlalll 能看到也是一些长长的字符啊,这样不可以防止一些初级用户模拟 post ?

    @Vegetable 这样不可以防止一些初级用户模拟 post?

    @msg7086 看我上面说的
    ochatokori
        6
    ochatokori  
       2019-10-12 17:40:43 +08:00 via Android
    可以,但没必要
    后端本来服务器资源就不太够,还要浪费去没什么用的解密
    css3
        7
    css3  
    OP
       2019-10-12 17:40:55 +08:00
    @KyonLi @drlalll @Vegetable @msg7086
    举个我自身的例子,我本身想着登录一个网站,预约个号,抓包发现是加密的,就把我挡住了,加密的,我也不知道它里边究竟是什么内容啊
    yplove156
        8
    yplove156  
       2019-10-12 17:40:56 +08:00
    我的网站的接口就是加密了的 http://xfisher.com
    msg7086
        9
    msg7086  
       2019-10-12 17:42:40 +08:00
    @css3 做外挂的是初级用户吗?
    而且比起模拟 POST,更方便的就是开个什么键盘模拟直接在浏览器上点点划划……

    说来以前我要从 AWS 的控制面板上下载每个月的账单,好几年的份却没有批量下载功能。于是搞了个 AutoIt 下来写了个脚本,浏览器里点击每个月的然后弹出框里点保存,然后去吃了个午饭回来就全下好了。
    你说我去模拟 POST 干啥。
    gitstash
        10
    gitstash  
       2019-10-12 17:43:54 +08:00
    前端很有必要加密,不加密的都是懒而已
    css3
        11
    css3  
    OP
       2019-10-12 17:46:30 +08:00
    @msg7086 比如手抓包到接口,写脚本批量(或者自动)干啥活的,未加密的,初级程序员,都能搞的定吧
    css3
        12
    css3  
    OP
       2019-10-12 17:46:57 +08:00
    @gitstash 终于看到一个同意加密的了😁
    css3
        13
    css3  
    OP
       2019-10-12 17:51:57 +08:00
    @msg7086 能爬虫,不一定看得懂前端加密代码吧?加了密,至少可以防止初级人员模拟 post 吧
    msg7086
        14
    msg7086  
       2019-10-12 17:52:23 +08:00
    @css3 手抓包简单还是直接弄个无头浏览器简单呢还是写个浏览器插件直接往网页上填数据简单呢。
    当然你要说初级程序员等于不会用更方便的方法只会用笨办法的话,倒也是有点道理的。
    等他们成长为资深程序员了就不怕加密了。
    66450146
        15
    66450146  
       2019-10-12 17:54:14 +08:00
    没必要,防重放攻击只要用一个短效 token 就行了

    或者用 protobuf 这种非文本形式的协议
    gam2046
        16
    gam2046  
       2019-10-12 17:55:36 +08:00
    没有必要。因为阻止初级用户并没有意义。

    现在 12306 还有几个人是自己写的,都是用别人写好现成的。

    而这些人都不是初级用户。还耗费了服务器资源。
    LeeSeoung
        17
    LeeSeoung  
       2019-10-12 17:57:56 +08:00
    你浏览器能发起的请求 任何人都能模拟。。就看成本了。而且不用加密而用其他手段来限制你的方法很多。。
    JerryCha
        18
    JerryCha  
       2019-10-12 22:55:56 +08:00
    加解密是需要额外性能的,真当初级用户破不了这种小把戏啊。
    还有,你用啥加密,RSA 公钥?
    ipwx
        19
    ipwx  
       2019-10-12 23:31:23 +08:00
    做外挂的哪是初级用户。。。

    你辛辛苦苦做了前段加密,人工成本先不说,让用户浏览器多了很多没必要的计算量,这都是降低用户体验的啊。还有服务器加解密,真当服务器是土里长的土豆?

    关键是它真的不管用。。。管用的就算是开销大也得上,比如 HTTPS。
    littlespider89
        20
    littlespider89  
       2019-10-12 23:39:55 +08:00
    只要是浏览里人能操作的(除验证码一类的),理论上都可以爬虫都可以模仿
    abcbuzhiming
        21
    abcbuzhiming  
       2019-10-12 23:48:45 +08:00
    楼主可能并不清楚 http 服务的设计哲学是什么,总之 http 服务并不靠局端加密来保证系统安全,http 只考虑传输过程加密
    humor66
        22
    humor66  
       2019-10-12 23:51:07 +08:00
    我网站也都是加密的, https://blog.shuipingguo.com 接口藏起来了,
    reus
        23
    reus  
       2019-10-12 23:57:35 +08:00
    多余,防君子不防小人,但做外挂的哪有君子?
    Mohanson
        24
    Mohanson  
       2019-10-13 00:18:29 +08:00 via Android   ❤️ 3
    最近正好接触密码学,简单和回答一下:在信道安全的假设下,对通信数据做加密是没有意义的。比如你登录远程 linux 服务器,你是直接输入明文密码的。而在信道不安全的情况下,对通信数据加密有意义又没有意义:因为你必须把密钥通过信道传送给对方。

    所以世界上正经的计算机科学家都在解决信道安全问题: https, ssl, tls 等,(删掉)而剩余的民科则在研究前端加密(删掉)。
    starsriver
        25
    starsriver  
       2019-10-13 08:50:17 +08:00 via Android
    普通人不需要加密,做爬虫的你加密也没用。

    吃饱了撑的做这种活。没有意义
    musi
        26
    musi  
       2019-10-13 09:51:30 +08:00
    12306 有验证码了啊,能破了的都不是初级程序员,破不了的就直接 pass 了
    love
        27
    love  
       2019-10-13 10:21:28 +08:00
    楼上有些挺可笑的,还扯到性能,参数加个密有什么性能损失

    如果真要让外挂开发者不好受,前端加密当然是有必要的,如果有个专人搞这个并经常变变算法小细节,能挡掉大部分并让剩下的难受得一 b
    jinliming2
        28
    jinliming2  
       2019-10-13 13:15:18 +08:00 via iPhone
    面对初级用户,也就抓抓包自己用着方便的,你也没必要去限制人家。
    要是已经抓包然后转成一个可以对外开放使用的工程了,可以产生大量请求了,那已经不是初级用户了,你加密也限制不了的。
    wafm
        29
    wafm  
       2019-10-13 14:29:34 +08:00
    对抗外挂最有效的办法不是使用强硬的技术手段,而是比比看谁更猥琐。
    a1274598858
        30
    a1274598858  
       2019-10-13 16:21:04 +08:00
    12306 今年启用了浏览器特征码..几天换一次算法,最后还不是被破解了
    dalin520
        31
    dalin520  
       2019-10-23 16:13:35 +08:00
    没必要加密,直接加个 token 就可以了,等于就是加个 cookie 或者 session 用于鉴权。你看过那个网站请求个接口还要参数加密的?
    css3
        32
    css3  
    OP
       2019-10-23 17:06:32 +08:00
    @dalin520 就医 160app😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2158 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:13 · PVG 00:13 · LAX 08:13 · JFK 11:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.