【网络安全】——客户端安全(浏览器安全、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注入,跨 ...
随机推荐
- Spring Boot从入门到精通(八)日志管理实现和配置信息分析
Spring Boot对日志的处理,与平时我们处理日志的方式完全一致,它为Java Util Logging.Log4J2和Logback提供了默认配置.对于每种日志都预先配置使用控制台输出和可选的文 ...
- chrome安装扩展插件出现-crx_header_invalid问题
1. 将*.crx文件重命名为*.rar 2.将rar文件解压 3. 在chrome浏览器添加扩展程序时选择“加载已解压的扩展程序” 4.添加成功
- 《前端之路》 - 初试 TypeScript(一)基础数据类型
一.先讲讲 TypeScript 什么是 typeScript ? typeScript 是 Javascript 的超集 我们用一张图来简单介绍下 ts 和 js 清清楚楚明明白白的关系- 为什么会 ...
- [BUG]微信小程序生成小程序码"小程序页面路径不存在,请重新输入"
描述 小程序页面线上能打开. 微信官方 获取小程序页面小程序码 页面 ,输入 小程序页面路径,提示 "小程序页面路径不存在,请重新输入". 使用微信复制小程序路径方法, 也是同样的 ...
- nuxt创建项目的步骤
nuxt创建项目的步骤 1.基本步骤 // 创建package.json依赖管理文件 npm init -y // 在package.json文件中添加运行nuxt的命令,之后npm run dev启 ...
- 分享macOS平台好用的视频分割、合并视频、提取音频、分离音频、音频转码的工具CCVideo
CCVideo 是一款运行在macOS上可分割视频(可多段分割).合并视频.提取音频.分离音频.音频转码的工具,操作方便,只需简单几步,便可轻松完成. 下载地址
- AspNetCore3.1_Secutiry源码解析_8_Authorization_授权框架
目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心流程 AspNetCore3.1_Se ...
- Selenium系列(二) - 控制浏览器操作的详细解读
如果你还不想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识 ...
- 批量redis未授权检测工具&批量redis弱口令爆破工具
今天需要然后就百度搜索了一波,然后自己稍微改了一下: #!/usr/bin/python3 # -*- coding: utf-8 -*- """ @Author: 偷来 ...
- LoadRunner录制HTTPS协议脚本
学习LoadRunner录制HTTPS协议脚本,其实是一个意外的收获.当我拿到要测试的URL时,我像以前的步骤一样录制脚本,但是录制结束后,发现并没有生成脚本,开始以为是LoadRunner的原因,我 ...