您现在的位置是:首页 >技术交流 >web安全-浏览器安全策略摘要总结 (渲染方式 沙盒策略 同源策略 内容安全策略-CSP指令 访问授权)网站首页技术交流
web安全-浏览器安全策略摘要总结 (渲染方式 沙盒策略 同源策略 内容安全策略-CSP指令 访问授权)
web安全-浏览器安全策略摘要总结
如有谬误,查证后将及时修正,仅作学习总结使用
Cookie
字段
- name:
cookie
名称 - value:
cookie
的值 - domain:用于指定cookie的有效域
- path:用于指定cookie的有效url
- expires:设定cookie的有效时间
- secure:设置此属性,将会仅在https中提交cookie
- httponly:设置此属性,客户端将无法获取cookie
Session
服务器在运行时为每一个用户的浏览器创造一个httpsession,用户访问对应的web服务时,可以将数据放在各自的session中,当用户访问服务器其他session资源时,服务器再从session中取出数据为用户服务
session有两个值:key与value
cookie与session区别
cookie保存在客户端,session保存在服务端,cookie用来保存客户端的登录状态,session保存用户在服务端的登录状态,可能要借助cookie
有关cookie与session的越权攻击
假如一个站点不会检测会话令牌,我们可以修改cookie值,再利用服务器验证机制,就可以登录到其他用户的界面
水平越权:获取和自己一样的客体用户cookie,进行登录
垂直越权:获取管理员的cookie,获得超越自己当前用户的权限
web服务组件
- 静态层 :web前端框架:Bootstrap,jQuery,HTML5框架等,主要存在跨站脚本攻击
- 脚本层:web应用,web开发框架,web服务端语言,主要存在远程命令执行
- 服务层:web容器(web中间件)主要存在远程溢出与Dos
- 数据层:存储数据的过程,主要存在SQL注入
- 系统层:操作系统,主要存在OS执行,缓冲区溢出
页面渲染
浏览器将请求返回的页面资源基于一定规则完成页面布局及绘制的过程,可以理解为对网页的优化过程,其渲染主要是通过浏览器引擎进行渲染
常见的渲染引擎:Trident,EdgeHTML,Webkit,Blink,Gecko
页面渲染过程
- 收到用户访问的消息,开始向对应服务端请求,在网页下载完成或者下载中解析返回的网页代码
- 渲染引擎读取HTML文档,将其转化为DOM树
- 解析样式表,并且将其应用到DOM树上,构造出渲染网页的树
- 从渲染的树中读取对应的数据,计算页面元素位置
- 进行排版优化,输出网页
浏览器的解析与解码
- 浏览器的解析是发生在生成DOM树的过程中,通常它的顺序是HTML CSS JS
- 浏览器解码发生在构建渲染树的过程中,根据编码规则进行如下顺序的解码:HTML URL JS
浏览器的特性与安全策略
基本概念
-
源 :数据来源,同源即相同的HOST,相同的协议,相同的端口
-
资源:DOM,前后端交互时AJAX请求的数据,Cookie等等
-
同源策略:
-
它限制了一个源中加载文本或脚本与来自其他源中资源的交互方式
- 不同域的客户端脚本在未明确授权的情况下,不能读写对方资源
-
同源策略的主要影响
-
XMLHttpRequest或
<img>
标签会受到同源策略的约束 -
Cookie,LocalStorage与IndexDB无法被读取
-
无法获得DOM
例如:iframe窗口和windows.open打开的窗口无法通信
可以通过几种常见的方式解决:片段识别符,windows.name,跨文档通信API,windows.postMessage
浏览器访问授权
为了保护网站,我们会在网页中嵌入标记给浏览器以指示,确保自己网站内容未嵌入到别人网站中去,从而避免点击劫持,如X-Frame-Options:
X-Frame-Options:DENY 即该页面不允许被以frame方式加载
X-Frame-Options:SAMEORIGIN 该页面只允许被同源页面加载
X-Frame-Options: 该页面只允许特定的域加载
浏览器的沙盒策略
通常用于对iframe行为进行行为的扩展,对嵌入页面的子资源进行限制,通常是对iframe进行参数限制
Allow-scripts :是否允许执行js脚本,没有则不允许
Allows-forms:是否允许使用表单,没有则不允许
Allow-top-navigation:是否允许嵌入子页面控制顶级窗口的跳转,没有则不允许
Allow-same-origin:是否允许访问同源数据,没有则不允许
浏览器的内容安全策略
内容安全策略是通过编码在HTTP响应头中的指令来实现的策略,它以一种可信的白名单做机制,来限制网站中是否可以包含某源内容,默认下不允许执行内联代码,及eval()
,newFunction()
,setTimeout()
等
常见的CSP指令:
- plugin-types:该指令指定了哪些MIME类型的插件可以被加载
- form-action:该指令指定了HTML表单中可以提交的的URLS
- reflected-xss:向浏览器下达开启或者关闭任何作用于过滤XSS攻击的启发式算法
- script-src:指定了web应用程序可以加载脚本的域
- default-src:指定某一资源类型指定指令没有被定义情况下的加载策略
- object-src:指定web应用可以加载的插件
- style-src:指定web应用程序可加载的CSS样式的域
- media-src:指定web应用程序可加载的媒体资源(音视频加载)的域
- img-src:指定web应用程序可加载的图片资源的域
- frame-src:指定web应用程序可加载框架的域
- font-src:指定web应用程序可加载字体资源的域
- connect-src:指定web应用程序可加载的脚本接口的域,如WebSocket,XMLHttpRequest,XHR, EventSource等