有什么办法可以把后端服务器完全隐藏起来啊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不在回答技术问题时复制粘贴 AI 生成的内容
ns2250225
V2EX    程序员

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

  •  1
     
  •   ns2250225
    ns2250225 2018-08-01 16:54:45 +08:00 16005 次点击
    这是一个创建于 2629 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个 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  
    PRO
       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  
    &nsp;  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
    IsA26hN4DcQDS7Z9
        30
    IsA26hN4DcQDS7Z9  
       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
        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
    隐藏接口那你怎么请求?你怎么请求我就可以怎么请求,成本的问题而已
    rus
        67
    reus  
       2018-08-02 17:58:46 +08:00
    打就行了。
    rzti483NAJ66l669
        68
    rzti483NAJ66l669  
       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 反向代理
    slowman
        74
    slowman  
       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
    C02TobNClov1Dz56
        83
    C02TobNClov1Dz56  
       2018-08-03 16:34:08 +08:00
    反代啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2691 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 161ms UTC 09:59 PVG 17:59 LAX 02:59 JFK 05:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86