面试的时候遇到的一道题,写一下自己的理解,不一定正确。
浏览器实现了同源策略,目的肯定是为了网络安全。如果没有SOP,恶意站点可以随意获取、请求别的站点的内容,真“裸奔”在互联网上。
那为什么浏览器不实现彻底的SOP,而允许了像script
、img
这类标签可以请求其他站点的资源呢?
这个问题google了一圈没有一个明确的说法,stackoverflow上有类似的问题,但是没有给出明确的答案。把各种观点总结下,先说结论:
浏览器没有实现彻底的SOP,是一个多方协商、折中、相对稳妥的方案:
- 首先明确一个观点,SOP是必须的;
- 但是彻底的SOP是不现实的,一个站点很难完全不依赖任何第三方资源;
- 在不彻底SOP背景下产生的安全问题,如XSS、XSCF,都有对应的解决方案;
- 可能存在的一些历史因素(需要向下兼容)
这道题没搞懂面试官是想考察什么,当时的回答是一个站点很难完全不依赖跨域资源,如果完全SOP,像现在很常见的CDN就用不了了。但是面试官貌似对这个答案不是很满意= =。。。说SOP的出现比CDN早很多。。
先暂且记录下现有的理解,后面有新的体会再补充。。