追梦时不要太肝,最初的热爱才是最重要的。
HTML5新标签
新标签的XSS
- HTML5定义了很多新标签、新事件,基于黑名单的XSS Filter可能不会覆盖到它们
iframe的sandbox
使用sandbox后:
<iframe>
加载的内容被视为一个独立的源- 其中的脚本被禁止执行、表单被禁止提交、插件被禁止加载、指向其他浏览器对象的链接也会被禁止
sandbox的属性可以通过参数来具体控制,可选择:
- allow-same-origin:允许同源访问
- allow-top-navigation:允许访问顶层窗口
- allow-forms:允许提交表单
- allow-scripts:允许执行脚本
有些行为,即使设置了allow-scripts也是不允许的,比如“弹出窗口”
Link Types:noreferrer
- noreferrer是
<a>
和<area>
的一个新的Link Types - 标签指定了noreferrer之后,浏览器再访问标签的这个链接,就不会发referer
- 为了保护用户隐私
Canvas
<canvas>
让JavaScript可以在页面中直接操作图片对象(包括像素点),构造图片区域- 通过JavaScript操作Canvas的每一个像素点,可以自动化识别验证码
- DIve Into HTML5详细介绍了Canvas
其他的安全问题
Cross-Origin Resource Sharing
- 为了把“跨域访问资源”合法化
- 如果
a.com
要访问b.com
的资源,在发送的请求中会包括Origin: http://www.a.com
用来标注源 b.com
如果返还给a.com
的请求头中,有一个Access-Control-Allow-Origin:http://www.a.com
,那么跨域请求资源就是被允许的
其实在服务器中,有这样一段代码:
1 |
|
postMessage
- postMessage允许每一个window(包括当前窗口、弹出窗口、iframes等)对象向其他的窗口发送文本消息,从而实现跨窗口的消息传递。这个功能不受同源策略的限制
- 在必要时,可以在接收端验证Domain,甚至url来防止非法页面的消息
- 一般不会把收到的信息写入innerHTML,会造成DOM based XSS
Web Storage
- 在浏览器中存储信息的方式:Cookie,Web Storage
- Cookie主要保存登陆凭证和少量信息,最大长度有限制。所以Web Storage就诞生了
- Web Storage的本质是非关系型数据库,由Key-Value对组成,可以通过JavaScript操作
- 受到同源策略的限制,每个域拥有的信息只会保存在自己的域下
Web Storage分为:
- Session Storage:关闭浏览器就会失效
- Local Storage:一直存在
JavaScript语法:
1 | window.sessionStorage.setItem(key,value); |
本文作者:
Bano
本文链接: https://bano247.com/2021/11/04/HTML5安全/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://bano247.com/2021/11/04/HTML5安全/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!