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

有什么办法可以把后端服务器完全隐藏起来啊

  •  1
     
  •   ns2250225 ·
    ns2250225 · 2018-08-01 16:54:45 +08:00 · 15300 次点击
    这是一个创建于 2311 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个 WEB 项目,浏览器访问的时候,F12 会暴露后端 API 的地址,有没有什么办法可以隐藏这个信息啊,求大神指点 😱,备注:后端接口都做了鉴权,可是老板要求要隐藏后端信息。。。
    83 条回复    2018-08-03 16:34:08 +08:00
    sakudie
        1
    sakudie  
       2018-08-01 16:59:38 +08:00
    搞个网关? 前端请求到网关,网关转发到对应的服务
    glacer
        2
    glacer  
       2018-08-01 16:59:56 +08:00   ❤️ 1
    CDN 啊。
    隐藏后端服务器 ip 是为了防止 ip 暴露被人恶意攻击,和你接口是否做鉴权没任何关系。
    qiayue
        3
    qiayue  
       2018-08-01 17:00:35 +08:00
    websocket 传二进制数据
    mcfog
        4
    mcfog  
       2018-08-01 17:01:40 +08:00 via Android   ❤️ 40
    告诉老板他看到的是前端服务器
    cszhiyue
        5
    cszhiyue  
       2018-08-01 17:03:08 +08:00
    其实是防爬虫吧
    ThirdFlame
        6
    ThirdFlame  
       2018-08-01 17:03:12 +08:00
    怎么隐藏,不通信就能隐藏了。 能不通信么? 不能,so 隐藏不了。
    CDN 是一种办法,但是接口 该有还是有啊
    cszhiyue
        7
    cszhiyue  
       2018-08-01 17:03:54 +08:00
    @glacer #2 cdn 主要是静态资源吧? api 做 cdn ????
    xiaohuangya
        8
    xiaohuangya  
       2018-08-01 17:08:06 +08:00 via Android
    @mcfog 真是个小机灵鬼呢。
    PulpFunction
        9
    PulpFunction  
       2018-08-01 17:10:05 +08:00
    加密?
    prolic
        10
    prolic  
       2018-08-01 17:10:38 +08:00 via Android
    没有,别想了
    keinx
        11
    keinx  
       2018-08-01 17:11:48 +08:00
    隐藏接口了怎么请求接口?用 JS 禁止他 F12 ?但是也只是表面功夫呀。
    guixiexiezou
        12
    guixiexiezou  
       2018-08-01 17:12:01 +08:00
    cdn 居然能做 api???????怎么实现的。。完全隐藏不可能, 但可以做成混淆,例如微博那种动态生成
    Quarter
        13
    Quarter  
       2018-08-01 17:13:07 +08:00 via iPhone
    不可能的,你总得有一个请求地址吧
    chairuosen
        14
    chairuosen  
       2018-08-01 17:18:09 +08:00
    @guixiexiezou 国内安全宝那种就可以啊 国外 cloudflare,全站 CDN
    glacer
        15
    glacer  
       2018-08-01 17:18:22 +08:00   ❤️ 1
    @cszhiyue
    @guixiexiezou
    域名 A 记录指到 CDN,CDN cname 记录指到服务器
    v2dead
        16
    v2dead  
       2018-08-01 17:22:25 +08:00
    你们是怕人攻击 DDos 么?简单的买个防 D 代理,业务服务器就隐藏在高防 IP 后面了。


    对了,套路云穷逼套餐 30Gb 的是 2 万每月起步。
    whypool
        17
    whypool  
       2018-08-01 17:23:07 +08:00
    没有,下一个
    mawerss1
        18
    mawerss1  
       2018-08-01 17:41:59 +08:00
    @mcfog 你这个小机灵可真鬼
    NicholasYX
        19
    NicholasYX  
       2018-08-01 17:45:27 +08:00
    隐藏了怎么请求?
    WordTian
        20
    WordTian  
       2018-08-01 17:47:44 +08:00 via Android
    隐藏 ip 可以,隐藏接口不可能啊
    glfpes
        21
    glfpes  
       2018-08-01 18:21:10 +08:00 via Android
    api 混淆服务,之前开发过。
    jswh
        22
    jswh  
       2018-08-01 18:24:07 +08:00
    使用 websocket,不要用 api,就没有 api 暴露了
    swcat
        23
    swcat  
       2018-08-01 18:25:49 +08:00 via iPhone
    肯定是告诉老板花钱买就行了呀
    Cbdy
        24
    Cbdy  
       2018-08-01 18:35:28 +08:00 via Android
    @glacer 抓包还是能抓到源站 ip 呀
    tongtf
        25
    tongtf  
       2018-08-01 19:15:01 +08:00
    域名解析到 CDN,动静态资源都让走 CDN,CDN 回源到后端服务器,静态资源缓存,动态调用设置不缓存
    glacer
        26
    glacer  
       2018-08-01 19:44:28 +08:00
    @Cbdy 得到的是 cdn 的 ip
    sampeng
        27
    sampeng  
       2018-08-01 20:49:22 +08:00
    楼上说 cdn 不能隐藏动态接口的怕是没这么用过的吧。。cache-control 头干嘛使的。。。
    sampeng
        28
    sampeng  
       2018-08-01 20:50:44 +08:00   ❤️ 2
    ps 一句。cdn 不仅仅可以隐藏真实服务器 ip。还能做到防 ddos。以及优化链路连接性。当然,会损失延迟和。。。钱
    icylogic
        29
    icylogic  
       2018-08-01 21:09:32 +08:00 via iPad
    不就是用类似 cloudflare 那种做反向代理吗。。。域名下的 dns 和证书都变成 cloudflare 的了。。。一般人都看不到你原服务器 ip
    Raynard
        30
    Raynard  
       2018-08-01 21:15:24 +08:00
    只能用 CDN 了,该回源的回源,该加速的加速。还能防御 ddos,防 c,就是费钱啊老铁
    someonedeng
        31
    someonedeng  
       2018-08-01 21:27:59 +08:00
    @mcfog 666
    ajan
        32
    ajan  
       2018-08-01 21:32:02 +08:00 via Android
    把服务器停掉呀
    reus
        33
    reus  
       2018-08-01 22:50:44 +08:00
    做不到就做不到,老板自己不懂,为什么要要求?直接和他讲做不到!
    mingyun
        34
    mingyun  
       2018-08-01 23:15:26 +08:00
    你老板是不也懂点技术
    qianmeng
        35
    qianmeng  
       2018-08-01 23:16:00 +08:00 via Android
    cdn 加反向代理两层,估计差不多了,完全隐藏不可能的,最多加密一下
    zythum
        36
    zythum  
       2018-08-01 23:21:26 +08:00
    跟老板说,他看到的是前端服务器,不是后端服务器。
    如果再不济,你跟老板打比方说,你要让别人给你寄个快递,但是不给地址,因为要隐藏私人信息,问这个快递通过什么方式发出并且寄到。
    MonoLogueChi
        37
    MonoLogueChi  
       2018-08-01 23:30:45 +08:00 via Android
    楼上说的 CDN 都是隐藏 IP,接口基本无法隐藏。如果是需要反爬虫的话,可以到网上看看那些奇葩的反爬虫总结
    huijiewei
        38
    huijiewei  
       2018-08-02 00:28:59 +08:00 via iPhone
    做个中间代理嘛

    前端后端都用 websocket 连中间代理

    中间代理的地址用第三方服务发布

    一个小时换一次 就是 IP 蛮贵的
    ericgui
        39
    ericgui  
       2018-08-02 01:09:36 +08:00
    @qiayue
    @jswh
    @huijiewei

    这三位大佬都提到了 websocket,应该可行。我也遇到类似问题,需要解决。mark 一下
    hacklele
        40
    hacklele  
       2018-08-02 02:53:17 +08:00
    CDN 就可以隐藏。我的就用 CDN 隐藏。简单方便。
    swkl86
        41
    swkl86  
       2018-08-02 06:20:31 +08:00   ❤️ 2
    一个之前案例,仅供参考

    背景:

    域名 a.com 10.0.0.2 (前端), b.com 10.0.0.3 (接口), ab 同内网

    a 本机绑定 host:10.0.0.3 b.api.com

    a 反向到当前 a 二级目录或者二级域名,nginx 拦截处理,也就是你们说的什么负载

    请求是直接转发还是中间再加个什么代理或通信端口层自己看

    例如我是直接 开了个转发端口 b.api.com:998

    b 机器绑定 a 机器的指向域名(如果没有用 ip )

    这样也就是你所说的隐藏后台业务服务器

    梳理下就是

    a.com/login --拦截或处理-->> a.com/api/login --数据转发-->> b.api.com:998/login

    效果大概如上

    然后,对于如上方案,后面被 pass 了,从安全角度来说,确实做到了隐藏后端
    只是我感觉吧,好麻烦,中间好几层消耗,太恶心了,没啥必要,纯粹增加时间和资源没什么意义

    然后目前采用的做法是

    前端-》中间处理层 -》后端

    中间处理层与后端采用 rsa 通信,每 10 分钟更换通信 token

    前端和中间层肯定有个基本的加密,例如你们常说的 jwt? 我是自己实现个内部算法

    前端和中间处理层是一台服务器,后端是独立另外一台服务器

    中间和后端的数据库不同

    中间层放的是一些基础数据,后端放的是敏感数据

    中间层往往是一个前端接口对应后端 n 个接口,最高的有 8 个接口对应一个前端接口

    然后和楼上说的,你前端域名再走次 cdn

    嗯,某种意义上来说,基本做到了完全隐藏你后端业务(大概,嗯是的)

    当然,这套方案落下来,个人还是感觉好恶心,还在考虑其他优化方案,望大佬指点(递阔洛)
    leokino
        42
    leokino  
       2018-08-02 07:30:36 +08:00
    前端服务器转发一下咯 hh。不过转发的区别在哪儿?除了不暴露真实 ip 意外?假装自己很安全。hhhh
    tempdban
        43
    tempdban  
       2018-08-02 07:43:40 +08:00 via Android
    可以再搞一个客户端做 api 隐藏 后端 ip 地址就变成 localhost
    Leigg
        44
    Leigg  
       2018-08-02 08:12:17 +08:00 via iPhone
    反爬参考商标网
    haimall
        45
    haimall  
       2018-08-02 08:18:21 +08:00 via Android
    做个假 api,调用真 api。 类似反代?
    killerv
        46
    killerv  
       2018-08-02 08:38:15 +08:00
    隐藏后端信息是什么意思?如果是为了隐藏真实 ip,走 CDN 可破。如果是隐藏接口地址,那就用 #4 的方法
    toma77
        47
    toma77  
       2018-08-02 09:14:52 +08:00
    golang midware
    lostsquirrelX
        48
    lostsquirrelX  
       2018-08-02 09:20:37 +08:00
    nginx 反向代理
    v2chou
        49
    v2chou  
       2018-08-02 09:23:00 +08:00
    谁提的 没看到那个手机壳被打的视频吗
    YangXiaoming
        50
    YangXiaoming  
       2018-08-02 09:41:56 +08:00
    没看到那个手机壳被打的视频吗?
    dorothyREN
        51
    dorothyREN  
       2018-08-02 09:44:26 +08:00
    内网通信喽,暴露了又能怎样
    ala2008
        52
    ala2008  
       2018-08-02 09:54:50 +08:00
    API 地址是指 URL ?
    koalli
        53
    koalli  
       2018-08-02 10:05:17 +08:00
    做反代或者 cdn 只是隐藏了真实的 api 地址吧,但是实际上这个做了反代或者 cdn 的本身就是个可以提供服务的 api 吧。。
    看起来并不能解决隐藏 api 地址这个需求,感觉 WebSocket 靠谱点。
    michaelcheng
        54
    michaelcheng  
       2018-08-02 10:29:51 +08:00
    微服务下的架构,一般都用 API Gateway (网关),所有的后端服务都走网关,由网关控制真实的服务地址,外部能看到只是这个网关的地址。

    前一阵子,刚用 kong 实践了下,https://konghq.com/kong-community-edition/
    zhzer
        55
    zhzer  
       2018-08-02 10:56:51 +08:00   ❤️ 1
    @mcfog 软件工程:领导攻防
    killer007
        56
    killer007  
       2018-08-02 10:57:10 +08:00
    前端使用 websocket 不会暴漏地址吗?
    simple11
        57
    simple11  
       2018-08-02 10:57:42 +08:00
    有过相同经历- -。 因为要控制很多权限,最后选择了 node.js 中间层做鉴权 + 转发。
    bombless
        58
    bombless  
       2018-08-02 11:07:06 +08:00 via Android
    怕安全问题就搞反向代理吧,你总得有个地方可以连
    slgz
        59
    slgz  
       2018-08-02 11:36:13 +08:00
    阿里云有防火墙, 可以做到地址隐藏..
    cnbobolee
        60
    cnbobolee  
       2018-08-02 11:40:55 +08:00
    具体要隐藏什么东西?
    reus
        61
    reus  
       2018-08-02 11:55:23 +08:00   ❤️ 2
    居然还有说 websocket 不暴露地址的…… websocket 握手不就是 HTTP ?后续通讯不是 HTTP ?
    killer007
        62
    killer007  
       2018-08-02 14:50:36 +08:00
    @reus 就是啊, 首先前端使用 ws 怎么隐藏地址!
    Radom
        63
    Radom  
       2018-08-02 15:25:25 +08:00
    老板懂些皮毛的技术真可怕
    artandlol
        64
    artandlol  
       2018-08-02 15:59:06 +08:00
    多台服务器做 HAProxy+keepalive
    artandlol
        65
    artandlol  
       2018-08-02 16:03:40 +08:00
    @michaelcheng 你觉得微服务哪个才是未来 比如 knative keubeless kong fission
    glaucus
        66
    glaucus  
       2018-08-02 16:19:19 +08:00
    隐藏接口那你怎么请求?你怎么请求我就可以怎么请求,成本的问题而已
    reus
        67
    reus  
       2018-08-02 17:58:46 +08:00
    打就行了。
    Humorce
        68
    Humorce  
       2018-08-02 19:01:04 +08:00
    把后端服务器搬到老板家,每一次 API 请求需要经过老板按回车才能返回结果。
    terence4444
        69
    terence4444  
       2018-08-02 19:06:47 +08:00 via iPhone
    反代转发即可
    4357
        70
    4357  
       2018-08-02 19:33:46 +08:00
    服务端渲染
    simonguo
        71
    simonguo  
       2018-08-02 19:41:12 +08:00 via iPhone
    隐藏的目的是什么?
    yulon
        72
    yulon  
       2018-08-02 20:52:34 +08:00
    只是骗老板的话,你把“ API URL + 随便随机字符串”用 Base64 编码一下当 URL,然后后端解码再把随机字符串去了得到真 URL。
    lfzyx
        73
    lfzyx  
       2018-08-02 21:03:24 +08:00
    中间加个 nginx 反向代理
    1423
        74
    1423  
       2018-08-02 21:10:22 +08:00
    没有人提 tor 啊。。
    匿名访问 /匿名建网站,就用 tor 呐
    还有 i2p
    ToT
        75
    ToT  
       2018-08-02 21:42:43 +08:00
    没有做过相关的 web 开发,隐藏后端信息目的是什么呀?是防止被攻击 和 防止接口随便调用?
    ihciah
        76
    ihciah  
       2018-08-02 22:42:39 +08:00 via iPhone
    你们老板可能想要一个 flash …
    wynemo
        77
    wynemo  
       2018-08-02 22:49:03 +08:00
    在机房里用布把服务器盖上。
    abcbuzhiming
        78
    abcbuzhiming  
       2018-08-02 23:54:41 +08:00
    @ericgui websocket,别人抓个包里就暴露了
    只要提供服务,就不可能隐藏、别的不说,这老板有没有说清楚做到什么叫隐藏?看不见吗?这不可能的好吗
    iicanf
        79
    iicanf  
       2018-08-03 09:03:14 +08:00 via Android
    打一架,fight fight fight
    myself659
        80
    myself659  
       2018-08-03 09:40:51 +08:00
    @1423 tor 部署有难度吧 i2p 在数字加密货币有应用
    wizardoz
        81
    wizardoz  
       2018-08-03 09:41:35 +08:00
    @cszhiyue 全站加速就是 API 的 CDN,到底能不能加速不知道,但是 LZ 想要的隐藏后端是做到了。
    Antidictator
        82
    Antidictator  
       2018-08-03 10:03:38 +08:00
    @iicanf #79
    chengyiqun
        83
    chengyiqun  
       2018-08-03 16:34:08 +08:00
    反代啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1163 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:52 · PVG 06:52 · LAX 14:52 · JFK 17:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.