回首半生匆匆,恍如一梦,你像风来了又走,我心满了又空。 ——张爱玲《半生缘》
同源策略
Origin = protocol + host + port
源 = 协议 + 域名 + 端口
理解:a.com的脚本,在未被b.com执行之前,无法修改b.com。所以不能让b.com随便执行a.com中的脚本
重要的是加载脚本的域,而不是存储脚本的域
XMLHttpRequest
<script>,<img>,<iframe>,<link>
中的src属性每次被加载时,本质是执行了一次GET请求,他们是可以跨域加载资源的,但JavaScript不能读写返回的内容- XMLHttpRequest,最初是不能跨域访问资源的,JavaScript的权限自然也不会受到限制
- 后来制定了XMLHttpRequest跨域访问标准,需要目标域返回的http头来授权是否允许跨域访问
第三方插件
第三方插件也会受到同源策略的限制,以flash为例:目标域通过crossdomain.xml来判断是否允许其他源来访问资源
hacker可以自己上传crossdomain.xml来绕开同源策略,解决方案:
- Flash会检查crossdomain.xml是否在根目录下
- MINE检查:检查服务器的http返回头的content-Type
浏览器沙箱
sandbox
用于隔离不信任的代码,如果要跳出sandbox边界进行通信的话,只能通过特定的数据通道(例如封装的API),在数据通道中会进行严格的检查
挂马
百度百科官方解释
所谓的挂马,就是黑客通过各种手段,包括SQL注入,网站敏感文件扫描,服务器漏洞,网站程序0day,等各种方法获得网站管理员账号,然后登陆网站后台,通过数据库“备份/恢复”或者上传漏洞获得一个webshell。利用获得的webshell修改网站页面的内容,向页面中加入恶意转向代码。也可以直接通过弱口令获得服务器或者网站FTP,然后直接对网站页面直接进行修改。当你访问被加入恶意代码的页面时,你就会自动的访问被转向的地址或者下载木马病毒。
实现方式
会在一个正常的网页,通过<script>
或者<iframe>
等标签加载一个恶意的网址
为了应对hacker的挂马攻击,浏览器发展出了“多进程架构”
多进程架构
以Chrome为例
主要进程:
- 浏览器进程
- 渲染进程
- 插件进程
- 扩展进程
TIPS:
- 插件进程与浏览器进程严格隔离
- 渲染引擎由sandbox隔离,网页代码如果想与浏览器内核进程通信、与操作系统通信,都需要经过IPC channel,在其中会进行安全检查
以IE为例
每一个Tab页是一个进程
浏览器的一些第三方插件是不受sandbox管辖的,就有一定的安全风险
恶意网址拦截
恶意网址分类
- 挂马网站:网站包含恶意脚本
- 钓鱼网站:模仿知名网站的相似页面来欺骗用户
对抗方法
- 黑名单:浏览器会周期性地从服务器获取最新的黑名单(例如PhishTank,和Google的SafeBrowsingAPI)
- EVSSL证书
EVSSL证书
- EVSSL证书是“全球数字证书颁发机构”与“浏览器厂商”共同打造的“增强型证书”
- 如果浏览器支持EV模式,就会给EVSSL证书一些特殊待遇,如果不支持,就会视其为普通证书
- 例如:在Firefox中,EVSSL是绿色的,普通证书是无色的,以此来帮助用户对抗钓鱼网站
本文链接: https://bano247.com/2021/10/31/浏览器安全/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!