Closed itviewer closed 1 year ago
这种太复杂,牵扯到的不光是html和js内的地址,还有js动态执行的内容,还有跨域信息等。看看有没有高人回答
我看了一下瑞智康诚在某高校的WebVPN的实践,限制条件不少,且为了体验更好还是需要对接单点登录系统SSO 1.首先需要在webvpn地址完成登录,比如目标高校主站地址是www.test.com,那么webvpn地址一般就是webvpn.test.com,一般登录进去可以看到几个SSO的导航页,
2.同时不是所有内网站点都可以通过webvpn代理,首先内网地址要有域名,比如A.test.com,然后通过webVPN代理时,转化后的域名为A.webvpn.test.com,由于cookie的同源策略和常规的浏览器同源策略不同,一个页面可以为本域和任何父域名设置cookie,只要父域不是公共后缀(public suffix)即可,也就是说A.webvpn.test.com完全可以使用webvpn.test.com的cookie
所以我理解瑞智康诚这种实践的前提:是对方的内网站点要有域名,利用cookie的同源策略特殊性完成cookie的传递,同时必要条件下(资源的同源策略限制)会对目标内网做一些改造,把目标内网的同源策略做松甚至关闭吧,不是一种通用解决方案
新开个 issue 关联 https://github.com/bjdgyc/anylink/issues/149 来讨论所谓的 webvpn 技术途径和实现必要性 对于部分非技术企业或高校用户场景,他们仅需要通过浏览器访问内网的简单资源,如简单的内网网站,这些用户其实需要的是一个代理服务,并且似乎混淆了代理和虚拟局域网(VPN)的概念,同时,又不可能让这些用户通过配置浏览器或操作系统代理的方法,使用传统意义上的HTTP代理服务器(指反向代理服务器)。 那怎么迎合这种需求,实现 webvpn 这个噱头呢?一种可能的途径是添加和移除url前缀: 比如要访问内网资源
http://xxoo.com/yy
,我们的 webvpn 地址为https://vpn.test.vqilu.cn/webvpn
https://vpn.test.vqilu.cn/webvpn/http/xxoo.com/yy
https://vpn.test.vqilu.cn/webvpn
,该接口移除前缀,转换为实际地址http://xxoo.com/yy
并转发请求,然后对返回的内容中的 html 和 js 内的所有链接添加https://vpn.test.vqilu.cn/webvpn
前缀,并修改返回结果中 cookie 的作用域,将修改后的请求结果返回给浏览器。https://vpn.test.vqilu.cn/webvpn
这个接口,这个接口继续移除链接前缀,重置cookie作用域,转发请求,修改请求后的内容中的cookie作用域和链接地址前缀,将修改后的内容返回给浏览器。这种方式在面对比如大文件上传下载等特殊功能时可能会有问题,而且是个比较脏的活,是一种变态的代理,代理,代理!和 vpn 技术没有半毛关系。希望有神人能给出其它技术途径!