前言

这是我观看了《前端漏洞分析及处理-蔡慧芨》公开课之后的一个总结及简单实践体会。在可能的情况下我会把他们都实际操作一遍,更加深刻地体会前端安全的重要性。

web安全问题有哪些

  • XSS-跨站脚本攻击(全称Cross SiteScript)
  • CSRF-跨站伪造请求(Cross Site Request Forgery)
  • SSRF-服务器伪造请求(Server-Side Request Forgery)
  • hijack-劫持

XSS-跨站脚本攻击

概念

全称是跨站脚本攻击(Cross SiteScript),用户填写的信息是可运行的js代码,并且操作了用户的界面(叫这个简称据说是为了和CSS做区分)

类型

  • 反射型--从URL中读取内容展示(示例
  • 存储型--从后台读取内容展示(示例

危害

如果恶意的js代码能够在我们的页面中运行的话,他们就可以操纵我们用户的界面,甚至是盗取用户私密信息,例如记录登录态的cookie等。

防范手段

  • 富文本--白名单过滤,可以理解为用户提交的信息只有符合白名单的标准才能通过,否则就会过滤掉,像一些敏感的标签和属性都会被过滤掉(示例
  • 纯文本--html encode, js encode,即把标签转化为语义标签(示例
  • 关于转义的时机,如果是多端共用提交的值的话一般展示时转义,因为有的端例如安卓要用就要反转义,工作量就比较大。如果都是web端的话我觉得在提交时就转义会比较好

CSRF-跨站伪造请求

概念

全称跨站伪造请求(Cross Site Request Forgery),利用你在网站登录的状态,悄悄提交各种信息(post,get请求)

场景

这种场景一般是你先正常登录了一个目标网站,并且没有退出登录,这个时候如果你点击了页面上的一个钓鱼网站(可能是中奖信息啊、性感美女之类的,哈哈),钓鱼网站就会主动向你的网站发起请求,这个时候你的登录态还是存在的,因为浏览器的不同进程之间可以共享登录态,所以钓鱼网站这个时候是可以顺利以你的身份任意访问你的网站的接口。

防范手段 (示例

  • 提交方式必须用POST然后用refer判断请求来源的域名是否是白名单里的合法域名,因为post请求肯定会有refer,而get请求不一定有。refer必须要页面内跳转才会有,直接在地址栏输入请求是没有的。
  • Token登录态校验,说白了钓鱼网站能够访问你的网站是因为自动获取了cookie信息,但你在请求头或者请求参数中加入token登录态字段的话他就没法自动获取了。

SSRF-服务器伪造请求

概念

服务器伪造请求(Server-Side Request Forgery)是利用某些业务服务器端会发起请求,请求内网地址

如何防范 (示例

  • 域名限制
  • 内网IP限制
  • 内网请求地址做token(特殊登录态)

hijack-劫持

概念

页面劫持,例如利用iframe嵌套你的页面,骗取用户输入信息

如何防范

  • 页面劫持:window.parent判断
  • Json劫持:返回{},而不是返回数据

其他攻击方式

利用回调的URL,也就是篡改你的redirect-url,例如你登录或者授权通过后的URL被篡改了

  • 校验redirect-url

JSONP & CORS安全校验

  • 这种防御手段是利用refer校验或者token校验

总结

web安全这一块平时开发中接触的不多,而且对于常见的一些攻击方式已经由一些约定俗称的规则来规避了,比如登录后加的token登录态。但安全这个东西之所以没有框架化和自动化就在于它的多变性和多角度性,而且对于后面几种攻击方式我暂时还没遇到过,等真实遇到了再写新的感悟吧。

参考

web安全问题分析及处理的更多相关文章

  1. 10 个强大的开源 Web 流量分析工具(转帖)

    Web 流量分析工具多不胜数,从 WebTrends 这样专业而昂贵的,到 Google Analytics 这样强大而免费的,从需要在服务器端单独部署的,到可以从前端集成的,不一而足.本文收集并介绍 ...

  2. 海量WEB日志分析

    Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, ...

  3. 项目总结SpringMVC+hibernate框架 web.xml 分析(2)

    紧接 项目总结SpringMVC+hibernate框架 原理(MVC) applicationContext.xml 文件(3) 这一步讲解项目模块化的配置,项目中每个模块配置一个文件,命名规则为 ...

  4. ArrayList源码和多线程安全问题分析

    1.ArrayList源码和多线程安全问题分析 在分析ArrayList线程安全问题之前,我们线对此类的源码进行分析,找出可能出现线程安全问题的地方,然后代码进行验证和分析. 1.1 数据结构 Arr ...

  5. Web 漏洞分析与防御之点击劫持(三)

    原文地址:Web 漏洞分析与防御之点击劫持(三) 博客地址:http://www.extlight.com 一.全称 点击劫持,顾名思义,用户点击某个按钮,却触发了不是用户真正意愿的事件. 二.原理 ...

  6. Web 漏洞分析与防御之 CSRF(二)

    原文地址:Web 漏洞分析与防御之 CSRF(二) 博客地址:http://www.extlight.com 一.全称 跨站请求伪造(Cross-site Request Forgery) 二.原理 ...

  7. Web 漏洞分析与防御之 XSS(一)

    原文地址:Web 漏洞分析与防御之 XSS(一) 博客地址:http://www.extlight.com 一.全称 跨站脚本攻击(Cross Site Scripting) 二.原理 通过在网站中的 ...

  8. Hadoop应用开发实战案例 第2周 Web日志分析项目 张丹

    课程内容 本文链接: 张丹博客 http://www.fens.me 用Maven构建Hadoop项目 http://blog.fens.me/hadoop-maven-eclipse/程序源代码下载 ...

  9. web安全问题-cookie

    web安全问题 cookie 1.cookies只能设置过期 不能删除 <script> now.toGMTString() => 事件可以用来设置cookie document.c ...

随机推荐

  1. Java 实现后缀xls文件读取

    Java 实现后缀xls文件读取 一.开发环境 poi采用的3.9版本 + JDK1.6 + Myeclipse 二,JAR包 三.实现代码 实体类:UserRoleBean package nc.x ...

  2. 20145105 《Java程序设计》实验三总结

    实验三 一.       实验内容 结对修改实验一代码,重点学习重构 二.       实验步骤 下载结伴同学的实验一代码 初始代码 进行整数.小数和负数的多组数据测试,发现一个运行错误的例子 分析后 ...

  3. SVC(STM32)

    这两个都是 system level service,有什么区别呢?…… 手册上说 SVC 这个指令是同步的,而 PendSV 是异步的,请问是什么意思呢?…… 高手路过尽请留言啊

  4. java.lang.NoClassDefFoundError错误

    根据前文,很明显NoClassDefFoundError的错误是因为在运行时类加载器在classpath下找不到需要加载的类,所以我们需要把对应的类加载到classpath中,或者检查为什么类在cla ...

  5. Android 自动化测试介绍

    1 介绍: 风格: 3, 4,

  6. json库的编译方法和vs2010中导入第三方库的方法

    json库的编译方法和vs2010中导入第三方库的方法 一.去相应官网下载json.cpp文件 Jsoncpp下载:https://sourceforge.net/projects/jsoncpp/  ...

  7. ant的原理

    ANT批量完成项目代码的重新编译.打包.测试.java语言编写与平台无关的. Ant工具 Ant是一种基于Java的build工具.理论上来说,它有些类似于(Unix)C中的make ,但没有make ...

  8. MongoDB(课时22 唯一索引)

    3.6.1 唯一索引 唯一索引的主要目的是用在某一个字段上,使该字段的内容不重复. 范例:创建唯一索引 db.students.ensureIndex({"name" : 1}, ...

  9. js 事件相关 事件处理 封装 事件封装 DOM 0 2 3 级事件

    1.绑定 function(element, type, handler){        if (element.addEventListener) {            element.add ...

  10. RabbitMQ入门_15_访问控制

    参考资料:https://www.rabbitmq.com/access-control.html A. 核心概念 Virtual Host:虚拟主机为 RabbitMQ 中的资源提供了逻辑分组与隔离 ...