Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
587 views
in Technique[技术] by (71.8m points)

问个脑洞问题,如果有个黑客浏览器不拦截这个同源限制,业务层是否可以接收到任意非同源的接口数据

问个脑洞问题,跨域是浏览器的安全行为,如果有个黑客浏览器不拦截这个同源限制,直接放行,业务层是否可以接收到任意非同源的接口数据
问题点在于

  1. 谁来监督浏览器的这个安全策略的正确性
  2. 服务端如何识别得到浏览器作弊

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
  1. 没人监督,因为同源策略不是 HTTP 协议层面的东西,只是浏览器层面的安全策略。
  2. 浏览器放跑一个同源限制的请求都不算什么大事,真正危险的浏览器漏洞甚至可以让你的操作系统沦陷。你不知道, PS Switch 这种游戏主机的破解,都是可以从浏览器内核漏洞开始挖掘的。
  3. 其实根本不需要什么黑客浏览器,Postman ,curl,Node、python 脚本,这些都是可用的 HTTP 客户端,他们都可以随意发送 HTTP 请求到你的服务器。甚至 Chrome 加个参数启动就可以让它禁用任何同源策略。
  4. 服务端无法识别作弊,UA、referrer、什么都可以伪造。你都不能称之为作弊,不是只有浏览器能发 HTTP 请求,debug工具,爬虫,脚本,你写的应用程序,iOS Android App,都可以发送 HTTP 请求。“同源限制”这个概念在这些场景中根本说都说不通。
  5. 服务端的安全性为什么要依赖浏览器的同源限制呢?服务端要做的就是对 HTTP 请求做认证和鉴权。只要人家手续齐全,你就要给人家办事,不要管办事人的出身,保证认证鉴权的逻辑是安全的就 OK。
那浏览器为什么要有同源限制呢?

那就要弄明白,浏览器的同源策略解决了什么安全问题。

同源策略隔离了不同源的 Cookie,Storage,DOM 树等的操作范围,似乎这些都无可厚非,如果这些东西都不加以隔离,那 Web 就大乱了。你读不到我家的 cookie,我哪怕用 iframe 嵌套你的网站也拿不到你内部的按钮或输入框。

还有一条是,JS 发送的网络请求也同样受同源策略约束。这一条限制的本质还是 cookie 造成的
。HTTP 本身是无状态的,但是因为 cookie 的原因,浏览器和网站之间的会话是有状态的。虽然你不能进我家,但是你家的遥控器(XHR)却能在我家开着电视的情况下(另一个网站的会话存在)换我的台(替用户在另一个网站做操作)?

跨域资源请求也不止 XHR 请求,图片,CSS,Script 都可以发出跨域请求。逻辑上,图片,css,script 都可以做到 “给别人家电视换台” ,所以他们也都受跨域资源共享的策略限制。

所以我们可以看到,同源策略解决的是非用户意愿的请求造成的安全问题。

而这个初衷,肯定管不了非要禁用浏览器同源限制的用户,抑或是自己用工具来模拟发请求的用户。你所说的黑客浏览器如果是用户自己安装的,那和他自己用工具模拟请求是一回事,你再折腾也只能折腾你自己的浏览器,那上面都是登录的你自己的用户。

如果说黑客浏览器是你从别的地方不小心下载的,别人就是想要黑你,好家伙,种点什么后门不好要选“禁用同源策略”这种蹩脚的地方埋坑。再则,这是杀毒软件的事了。

如果你说的是那种第三方浏览器谁来监督?那只能是用户自己了。你愿意相信这个浏览器,那就用。至于服务端,还是那句话,浏览器限制不限制非同源请求,跟服务端本身的安全没有关系。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...