​ 近在学习网络安全相关的知识,于是先从业内一本系统讲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)的更多相关文章

  1. 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)

    关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...

  2. XSS/CSRF跨站攻击和防护方案

    Xss(Cross Site Scripting 跨站脚本攻击)/CSRF(Cross-site request forgery 跨站请求伪造),它与著名的SQL注入攻击类似,都是利用了Web页面的编 ...

  3. 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 ...

  4. H5案例分享:使用JS判断客户端、浏览器、操作系统类型

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  5. DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对这个漏洞的利用方式进行简单的概括 . 这个漏洞的利用前提是需要登录到后台进行操作 ...

  6. ASP.NET程序单客户端(浏览器)登录的实现方案

    需求描述:当用户的账户在另一个浏览器中登录的时候,需要把当前浏览器的登录强制下线.这种需求在业务系统,或付费视频服务网站中比较常见. 这种需求我称之为"单客户端(浏览器)"登录,与 ...

  7. 《笔记篇》非JS方法跳转到一个新页面,主要防止客户端禁止浏览器JS以后的跳转异常

    用非JS方法打开一个新页面,主要防止客户端禁止浏览器JS以后的跳转失效 <meta http-equiv="refresh" content="0; url=htt ...

  8. 深入理解OAuth2.0 XSS CSRF CORS 原理

    基于Token的WEB后台认证机制 http://www.cnblogs.com/xiekeli/p/5607107.html 深入理解OAuth2.0协议http://blog.csdn.net/s ...

  9. CSRF、XSS、clickjacking、SQL 的攻击与防御

    CSRF攻击 原理: 跨站请求伪造.是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 网站通过cookie来实现登录功能.而cookie只要存在浏览器中,那么浏览器在访问含有这 ...

  10. Web攻防之XSS,CSRF,SQL注入

    摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...

随机推荐

  1. Spring Boot从入门到精通(八)日志管理实现和配置信息分析

    Spring Boot对日志的处理,与平时我们处理日志的方式完全一致,它为Java Util Logging.Log4J2和Logback提供了默认配置.对于每种日志都预先配置使用控制台输出和可选的文 ...

  2. chrome安装扩展插件出现-crx_header_invalid问题

    1. 将*.crx文件重命名为*.rar 2.将rar文件解压 3. 在chrome浏览器添加扩展程序时选择“加载已解压的扩展程序” 4.添加成功

  3. 《前端之路》 - 初试 TypeScript(一)基础数据类型

    一.先讲讲 TypeScript 什么是 typeScript ? typeScript 是 Javascript 的超集 我们用一张图来简单介绍下 ts 和 js 清清楚楚明明白白的关系- 为什么会 ...

  4. [BUG]微信小程序生成小程序码"小程序页面路径不存在,请重新输入"

    描述 小程序页面线上能打开. 微信官方 获取小程序页面小程序码 页面 ,输入 小程序页面路径,提示 "小程序页面路径不存在,请重新输入". 使用微信复制小程序路径方法, 也是同样的 ...

  5. nuxt创建项目的步骤

    nuxt创建项目的步骤 1.基本步骤 // 创建package.json依赖管理文件 npm init -y // 在package.json文件中添加运行nuxt的命令,之后npm run dev启 ...

  6. 分享macOS平台好用的视频分割、合并视频、提取音频、分离音频、音频转码的工具CCVideo

    CCVideo 是一款运行在macOS上可分割视频(可多段分割).合并视频.提取音频.分离音频.音频转码的工具,操作方便,只需简单几步,便可轻松完成. 下载地址

  7. AspNetCore3.1_Secutiry源码解析_8_Authorization_授权框架

    目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心流程 AspNetCore3.1_Se ...

  8. Selenium系列(二) - 控制浏览器操作的详细解读

    如果你还不想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识 ...

  9. 批量redis未授权检测工具&批量redis弱口令爆破工具

    今天需要然后就百度搜索了一波,然后自己稍微改了一下: #!/usr/bin/python3 # -*- coding: utf-8 -*- """ @Author: 偷来 ...

  10. LoadRunner录制HTTPS协议脚本

    学习LoadRunner录制HTTPS协议脚本,其实是一个意外的收获.当我拿到要测试的URL时,我像以前的步骤一样录制脚本,但是录制结束后,发现并没有生成脚本,开始以为是LoadRunner的原因,我 ...