如果是所谓的如果没有跨域限制那么一个网址可以通过向另一个网址发起请求而获取到数据的安全问题的话,
为什么 native 应用没有这个安全问题?
这个安全问题是可以被解决的吗? 跨域限制是否有更好的改进方向呢?
1
SunriseFox 2020-04-03 16:59:22 +08:00
跨域不是安全问题,而是安全策略
跨域是浏览器的安全策略,为了防止你在访问 a 网站时被 a 网站的脚本以你的名义去访问 b 网站做些奇怪的事情。 如果你的应用不访问这个恶意的 a 网站,或者说,从来不访问 a 网站之外的其他网站,就自然没有这个安全问题。 你的 pwa 有跨域问题,那么它本质上是个有这个安全策略的浏览器,而不是 “有这个安全问题”。 你的 native 没有,那么就是因为没有人帮你实现这个安全策略,而不是 "没有这个安全问题"。 |
2
whileFalse 2020-04-03 18:28:35 +08:00
因为你会在浏览器里面登录不同网站的各种账户。如果浏览器没有跨域限制是什么概念?
相当于你的手机上装了支付宝,并且登陆了账号。然后手机上任何一个 app 都可以静默调起支付宝 app 给人转账,你还不知道。 以上的情况可能发生吗?不可能。所以你觉得 native 应用有没有跨域限制?有这么个限制,但你不知道而已。 |
3
vevlins 2020-04-03 18:37:20 +08:00 2
因为 pwa 还是使用 cookie 进行身份验证,而 native 应用通过 token 。
就这么简单。 |
4
gz911122 OP |
5
gz911122 OP @SunriseFox native 没有这个安全策略,那么有什么弊端吗? 会安全性更低么?
|
6
love 2020-04-03 19:14:43 +08:00
这也要问吗,因为网页很容易被打开,甚至在用户没注意的情况下,而 native 需要让用户安装,有应用商店审核,本身就比较安全。
|
7
WordTian 2020-04-03 19:27:14 +08:00 via Android
pwa 调用的 chrome 的浏览器内核啊,浏览器有同源策略不是正常的吗?
|
8
morethansean 2020-04-03 19:30:45 +08:00
你会在饿了么的 app 里面登录美团吗?
但 pwa 是跑在浏览器环境里的,并没有做单独隔离。 |
9
SunriseFox 2020-04-03 20:03:15 +08:00 via Android
@gz911122 ……不知道该说什么……总之 1 、所有的规矩都是人定的 2 、网页跑在浏览器上,浏览器定了这个规矩 3 、应用程序跑在操作系统上,操作系统没有这个规矩
|
10
whileFalse 2020-04-03 20:15:14 +08:00
@gz911122 #4 native 限制你扮演别的 [代码库] 里的 [身份] 。也就是一个 native 不能直接使用另一个 native 的登录状态。
|
11
geelaw 2020-04-03 20:25:16 +08:00 via iPhone
问题错误,对于一个一般程序来说不存在浏览器里 origin 的概念,自然不可能有“跨域”甚至“禁止跨域”的说法,程序做的事情是用 TCP 和另一个机器对话。
对于网页来说,它是浏览器模型下的程序,自然受到浏览器的约束。同源策略是为了保证浏览器模型下的隔离设置的,而浏览器的安全模型是向用户提供安全保证的契约。实践表明同源策略可以防范许多用户不希望遭受的攻击,所以会加入现代浏览器的安全策略。 另外,从逻辑简单性+归缪的角度思考这个问题:Chrome 也只不过是一个一般程序,如果一般程序必须和一个域名绑定(假设这句话甚至是有意思的),为什么 Chrome 不是只能访问 Google 的网站? |
12
jugelizi 2020-04-03 20:26:01 +08:00 via iPhone
好比浏览器就是个大食堂 好多餐厅 每家都要管好自己的餐具 而一个小饭馆就不需要 因为都是他的
|
14
iX8NEGGn 2020-04-04 13:44:19 +08:00 via iPhone
@whileFalse 大佬,怎么感觉你理解错了,跨域是浏览器策略,一楼才是正解,而不是 native 应用也有这个限制
|
16
whileFalse 2020-04-04 17:09:16 +08:00
@iX8NEGGn 那你说浏览器为什么有这个策略?
|