【网络安全】——客户端安全(浏览器安全、XSS、CSRF、Clickjacking)
近在学习网络安全相关的知识,于是先从业内一本系统讲Web安全的书《白帽子讲Web安全》系统学习Web安全的相关知识。在此整理书中的知识层次,不求详尽,只求自己对整个Web安全梗概有所了解,另外记录下来以便以后温习。
本书总共分为四篇,作者的安全世界观,客户端脚本的安全、服务端应用的安全以及互联网公司安全运营。这一篇博客记录的是客户端脚本安全的知识,包括安全世界观、浏览器安全、XSS跨站脚本攻击、跨站点请求劫持CSRF、点击劫持和HTML5安全。
ps:阅读本书时,发现作者是年西安交通大学少年班出身,在大学期间就成立了“幻影”,后成为中国安全圈内极具影响力的组织 。算来还是学长,在此对学长的书以及学长在中国网络安全界的影响,膜一波。
世界观安全
安全三要素 CIA
- 机密性 Confidentiality
- 完整性 Integrity
- 可用性 Availability
安全评估
资产等级划分=》威胁分析=》风险分析=》确认解决方案
互联网的核心是由用户数据驱动的
互联网安全的核心问题,是数据安全的问题
威胁建模 STRIDE
伪装,篡改,抵赖,信息泄露,拒绝服务,提升权限
风险模型 DREAD
白帽子兵法
- Secure By Default 原则(黑白名单)
- 最小权限原则
- 纵深防御原则(1.多层面,多方面 2.正确的地方做正确的事)
- 数据与代码分离原则
- 不可预测性原则
浏览器安全
同源策略 Same Origin Policy
源 浏览器为了不让浏览器的页面行为形成干扰,提出“源”。
影响源的因素有:host、子域名、端口、协议
对于当前页面来说,重要在加载JS的域
在浏览器中 script、 img 、iframe 、link、 标签跨域加载资源,实际发起一次GET请求,但不能读写返回的内容
XMLHttpRequest受到同源策略影响
浏览器沙箱
挂马 在网页中插入恶意代码,利用浏览器漏洞执行任意代码
sandbox 资源隔离类模块,将不受信任的代码隔离在访问区之外,通过严格合法检验的API进行访问,各个模块分隔开
多进程浏览器 浏览器多进程,防止单页面崩溃导致全局崩溃
恶意网址拦截
浏览器周期性从服务器端获得一份最新的恶意网址黑名单
分类 1. 挂马网站 2. 钓鱼网站
PhishTank提供恶意网址黑名单
EVSSL证书(兼容X509标准)浏览器特别对待
高速发展的浏览器安全
Firefox 第一个支持CSP(Content Security Policy)的浏览器,插入一个http返回头
跨站脚本攻击 (XSS)
简介
XSS: Cross Site Script
黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
分类
- 反射型XSS : 将用户输入的数据“反射”给浏览器 非持久性XSS
- 储存型XSS : 将用户输入的数据储存在服务端
- DOM Based XSS : 通过修改页面的DOM节点形成的XSS
XSS攻击进阶
XSS Payload : JS或者其他富客户端的脚本
常见:读取cookie对象,发起cookie劫持。(插入一张看不见的图片,将cookie发给远程服务器)
HttpOnly可以防止cookie劫持
强大的XSS Payload
- 构造GET和POST请求 1.构造form表单 2.XMLHttpRequest 发送POST请求
- XSS钓鱼 与用户进行交互,eg:伪造出登录框,将密码发送至服务器
- 识别用户浏览器 UserAgent对象,用JS脚本实现
- 识别用户安装的软件 ActiveX控件,很多第三方软件也会泄露电脑软件信息
- CSS History Hack 通过CSS发现用户曾经访问过的网站
- 获取用户真实IP地址 通过第三方软件完成,eg:JAVA的Java Applet接口
常见XSS攻击平台 Attack API,BeEF, XSS-Proxy
XSS worm Samy Worm 通过CSS构造出XSS
百度空间蠕虫
XSS构造技巧
- 利用字符编码
- 绕过长度限制(1将恶意代码隐藏起来 eg:location.hash不会发送 2.利用注释符绕过两个文本框从而增加长度)
- 使用base标签:设定紧接其后的相对路径的host
- window.name 由于window对象很多时候不受同源策略的影响
**变废为宝 碟中谍 Mission impossible **
- Apache Expect Header XSS :JS控制的浏览器环境无法控制http头,但是利用flash发起请求可以自定义大多数HTTP头
- Anehta的回旋镖:将要利用的反射型XSS嵌入一个储存型XSS中
Flash XSS 在Flash中可以嵌入ActionScript脚本 ,如果一定要用Flash,要求转码为flv静态文件,或者配置参数
JS 框架的XSS漏洞 信任了用户传入的参数,用户可能上传恶意代码
XSS的防御
- 四两拨千斤HttpOnly:禁止JS访问带有HttpOnly属性的Cookie
- 输入检查 : 客户端服务端同时检查 XSS Filter
- 输出检查 : 编码或者转义 JavaScriptEncode() HtmlEncode() ,大部分XSS漏洞可以再模板系统中解决
- 正确地防御XSS , XSS 实质上是一种 HTML注入,用户数据被当成HTML代码来执行,所以要在所有XSS可能出现的场景一一解决
- 构造script标签,执行脚本——使用HtmlEncode,以及JavaScriptEncode
- CSS,style中出现漏洞——使用encodeForCSS()函数
- 地址栏中——URLencode
- 处理富文本,富文本是完整的HTML代码——使用白名单
- 防御DOM Based XSS
跨站点请求伪造(CSRF)
CSRF简介
攻击者利用用户的身份,进行http请求,从而造成破坏,不需要获得cookie直接利用用户
CSRF进阶
浏览器的Cookie策略
cookie分为 Session Cookie临时cookie 和Third-party cookie 本地cookie ,IE,Safari默认拦截本地cookie的发送
P3P头的副作用 允许iframe,script等标签就不会拦截第三方cookie的发送
GET/POST的漏洞,php的$_REQUEST 和POST,创建隐形的iframe让用户发起POST请求
Flash CSRF (已经不能发送本地cookie)
CSRF Worm
CSRF防御
- 验证码,强制让用户与应用进行 交互才能发起合法的网络请求
- Referer Check 用于检查请求是否来自合法的源
- Anti CSRF Token
- CSRF能够成功的原因是攻击者可以猜到重要操作的所有参数
- 增加Token在Session或者Cookie中,提交时,需要验证表单中的Token
- Token使用原则(根据不可预测性原则):1.足够随机生成 2.可以考虑生成多个有效的Token解决多页面共存的问题 3.Token的保密性
- 防止Token泄露:1.Token放在表单中 2.敏感操作由GET换为POST 3.以form表单或者AJAX的形式提交
点击劫持(Clickjacking)
什么是点击劫持
视觉上的欺骗手段。攻击者通过使用一个透明的、不可见的iframe覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe的位置,可以诱使用户恰好点击iframe页面的一些功能按钮。
Flash点击劫持
在Flash游戏上覆盖一个iframe最终可以在用户不知情的情况下达到目的。
图片覆盖攻击
在可信的网站上,通过覆盖图片 XSIO 方式,让用户进入钓鱼网站或者利用用户完成某些操作。
拖拽劫持与数据窃取
浏览器拖拽事件,利用隐形的iframe来诱导用户完成需要的操作。
Clickjacking3.0触屏劫持
手机OS系统浏览器中很多时候会隐藏地址栏,从而攻击者伪造出一个iframe来欺骗用户。
Clickjacking防御
通过禁止跨域的iframe来防范。
- frame busting 防止iframe的嵌套
- X-Frame-Options (Http头)可以选择性决定是否加载或者是否加载不同源的iframe,属性值有DENY, SAMEORIGIN, ALLOW-FORM origin
HTML5安全
HTML5新标签
- 新标签的XSS : 、等新标签的XSS攻击
- iframe的sandbox: iframe新属性sandbox能够将iframe标签加载的内容视作一个独立的源,禁止执行脚本,表单禁止提交,插件禁止被加载,指向其他浏览对象的链接也会被禁止
- Link Types:noreferrer 浏览器请求该标签不再发送Referer,需要开发者手动添加
- Canvas的妙用:使用Canvas在线破解验证码
其他安全问题
- Cross-Origin Resource Sharing:jsonp,iframe合法跨域,发起请求的时候必须带上一个Origin Header(判断请求是否来自一个合法的源),服务器返回一个HTTPHeader
- postMessage——跨窗口传递:允许每一个window向其他窗口发送文本消息,从而实现跨窗口的消息传递,不受同源策略的影响。1.在接受窗口验证Domain甚至URL 2.对消息进行检查,防止XSS攻击
- Web Storage: 受到同源策略影响。但是当储存有敏感信息时,也有可能成为被攻击的目标。
【网络安全】——客户端安全(浏览器安全、XSS、CSRF、Clickjacking)的更多相关文章
- 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)
关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...
- XSS/CSRF跨站攻击和防护方案
Xss(Cross Site Scripting 跨站脚本攻击)/CSRF(Cross-site request forgery 跨站请求伪造),它与著名的SQL注入攻击类似,都是利用了Web页面的编 ...
- XSS CSRF
XSS CSRF XSS 参考 https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC ...
- H5案例分享:使用JS判断客户端、浏览器、操作系统类型
使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...
- DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对这个漏洞的利用方式进行简单的概括 . 这个漏洞的利用前提是需要登录到后台进行操作 ...
- ASP.NET程序单客户端(浏览器)登录的实现方案
需求描述:当用户的账户在另一个浏览器中登录的时候,需要把当前浏览器的登录强制下线.这种需求在业务系统,或付费视频服务网站中比较常见. 这种需求我称之为"单客户端(浏览器)"登录,与 ...
- 《笔记篇》非JS方法跳转到一个新页面,主要防止客户端禁止浏览器JS以后的跳转异常
用非JS方法打开一个新页面,主要防止客户端禁止浏览器JS以后的跳转失效 <meta http-equiv="refresh" content="0; url=htt ...
- 深入理解OAuth2.0 XSS CSRF CORS 原理
基于Token的WEB后台认证机制 http://www.cnblogs.com/xiekeli/p/5607107.html 深入理解OAuth2.0协议http://blog.csdn.net/s ...
- CSRF、XSS、clickjacking、SQL 的攻击与防御
CSRF攻击 原理: 跨站请求伪造.是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 网站通过cookie来实现登录功能.而cookie只要存在浏览器中,那么浏览器在访问含有这 ...
- Web攻防之XSS,CSRF,SQL注入
摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...
随机推荐
- 上线前测试的bug,要不要处理,跟版本的关系
最近有两个项目是在旧版本上实施的.上线前经过一轮测试后,发现了一些产品(我们的产品确实不稳定) 在这个项目上,修改产品bug是肯定的.但是要不要追踪这些bug? 这就跟版本使用范围有关系了,毕竟要考虑 ...
- MySQL中SQL Mode的查看与设置
MySQL可以运行在不同的模式下,而且可以在不同的场景下运行不同的模式,这主要取决于系统变量 sql_mode 的值.本文主要介绍一下这个值的查看与设置,主要在Mac系统下. 对于每个模式的意义和作用 ...
- Mathtype快捷键&小技巧
Mathtype使用方便,能插入到Office等编辑器中,Latex公式在某些地方更加通用,如网页和书籍. 1. Mathtype简介 数学公式编辑器(MathType)是一款专业的数学公式编辑工具, ...
- guava限流器RateLimiter原理及源码分析
前言 RateLimiter是基于令牌桶算法实现的一个多线程限流器,它可以将请求均匀的进行处理,当然他并不是一个分布式限流器,只是对单机进行限流.它可以应用在定时拉取接口数据, 预防单机过大流量使用. ...
- 如何在vue中修改动态标签中的样式和修改组件库样式
vue中修改动态标签中的样式和修改组件库样式 因为vue中的标签在渲染的时候,都会给标签加上id 所以你想在<style lang="scss" scoped>直接修改 ...
- SpringCloud系列之配置中心(Config)使用说明
大家好,最近公司新项目采用SpingCloud全家桶进行开发,原先对SpringCloud仅仅只是停留在了解的初级层面,此次借助新项目的契机可以深入实践下SpringCloud,甚是Happy.大学毕 ...
- java 获取 list 集合获取指定的 字段 数组
/** * * AdminEntity 管理员实体类 * getAdminId 获取管理员实体类中的id * */ @Testvoid adminIdList () { List<AdminEn ...
- 【转载】oracle的安装和配置
转自: https://blog.csdn.net/weixin_40364885/article/details/80787472 一.概念 oracle在使用的时候时是不收费的,如果你要在工作中来 ...
- 通达OA rce复现
通达OA下载:链接:https://pan.baidu.com/s/1c0P-M-IyY5VxfH5d0qKHsQ 提取码:l0pc 漏洞原因:未授权文件上传 + 文件包含(利用nginx日志也可以g ...
- Django之模板层细说
django的模板层,基于我们前面学习的内容,也知道主要语法是{{变量相关}}{%逻辑相关%},那么具体还有哪些内容呢?且听我娓娓道来. 模板层(模板语法) 标签 过滤器 自定义标签,过滤器,incl ...