为什么 pwa 还是有跨域限制,而 native 应用没有呢?

2020-04-03 16:42:11 +08:00
 gz911122

如果是所谓的如果没有跨域限制那么一个网址可以通过向另一个网址发起请求而获取到数据的安全问题的话,

为什么 native 应用没有这个安全问题?

这个安全问题是可以被解决的吗? 跨域限制是否有更好的改进方向呢?

2347 次点击
所在节点    问与答
17 条回复
SunriseFox
2020-04-03 16:59:22 +08:00
跨域不是安全问题,而是安全策略
跨域是浏览器的安全策略,为了防止你在访问 a 网站时被 a 网站的脚本以你的名义去访问 b 网站做些奇怪的事情。
如果你的应用不访问这个恶意的 a 网站,或者说,从来不访问 a 网站之外的其他网站,就自然没有这个安全问题。
你的 pwa 有跨域问题,那么它本质上是个有这个安全策略的浏览器,而不是 “有这个安全问题”。
你的 native 没有,那么就是因为没有人帮你实现这个安全策略,而不是 "没有这个安全问题"。
whileFalse
2020-04-03 18:28:35 +08:00
因为你会在浏览器里面登录不同网站的各种账户。如果浏览器没有跨域限制是什么概念?
相当于你的手机上装了支付宝,并且登陆了账号。然后手机上任何一个 app 都可以静默调起支付宝 app 给人转账,你还不知道。

以上的情况可能发生吗?不可能。所以你觉得 native 应用有没有跨域限制?有这么个限制,但你不知道而已。
vevlins
2020-04-03 18:37:20 +08:00
因为 pwa 还是使用 cookie 进行身份验证,而 native 应用通过 token 。

就这么简单。
gz911122
2020-04-03 18:43:49 +08:00
@whileFalse 那 native 这个限制为什么不影响我请求别的域名呢?

至少对开发者更友好啊
gz911122
2020-04-03 18:44:22 +08:00
@SunriseFox native 没有这个安全策略,那么有什么弊端吗? 会安全性更低么?
love
2020-04-03 19:14:43 +08:00
这也要问吗,因为网页很容易被打开,甚至在用户没注意的情况下,而 native 需要让用户安装,有应用商店审核,本身就比较安全。
WordTian
2020-04-03 19:27:14 +08:00
pwa 调用的 chrome 的浏览器内核啊,浏览器有同源策略不是正常的吗?
morethansean
2020-04-03 19:30:45 +08:00
你会在饿了么的 app 里面登录美团吗?
但 pwa 是跑在浏览器环境里的,并没有做单独隔离。
SunriseFox
2020-04-03 20:03:15 +08:00
@gz911122 ……不知道该说什么……总之 1 、所有的规矩都是人定的 2 、网页跑在浏览器上,浏览器定了这个规矩 3 、应用程序跑在操作系统上,操作系统没有这个规矩
whileFalse
2020-04-03 20:15:14 +08:00
@gz911122 #4 native 限制你扮演别的 [代码库] 里的 [身份] 。也就是一个 native 不能直接使用另一个 native 的登录状态。
geelaw
2020-04-03 20:25:16 +08:00
问题错误,对于一个一般程序来说不存在浏览器里 origin 的概念,自然不可能有“跨域”甚至“禁止跨域”的说法,程序做的事情是用 TCP 和另一个机器对话。

对于网页来说,它是浏览器模型下的程序,自然受到浏览器的约束。同源策略是为了保证浏览器模型下的隔离设置的,而浏览器的安全模型是向用户提供安全保证的契约。实践表明同源策略可以防范许多用户不希望遭受的攻击,所以会加入现代浏览器的安全策略。

另外,从逻辑简单性+归缪的角度思考这个问题:Chrome 也只不过是一个一般程序,如果一般程序必须和一个域名绑定(假设这句话甚至是有意思的),为什么 Chrome 不是只能访问 Google 的网站?
jugelizi
2020-04-03 20:26:01 +08:00
好比浏览器就是个大食堂 好多餐厅 每家都要管好自己的餐具 而一个小饭馆就不需要 因为都是他的
yunye
2020-04-03 20:40:49 +08:00
@vevlins 你是认真的吗?
iX8NEGGn
2020-04-04 13:44:19 +08:00
@whileFalse 大佬,怎么感觉你理解错了,跨域是浏览器策略,一楼才是正解,而不是 native 应用也有这个限制
vevlins
2020-04-04 14:07:36 +08:00
@yunye 我的说法有什么问题呢?
whileFalse
2020-04-04 17:09:16 +08:00
@iX8NEGGn 那你说浏览器为什么有这个策略?
zoharSoul
2020-10-26 16:50:08 +08:00
@vevlins 突然明白了这个问题的来源.
就是因为浏览器会默认加上 cookie, 如果不是这个自动机制, 或者是 token 的话, 根本没这个安全问题.

谢谢解答.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/659065

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX