前言

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

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

    Monit 是一个用来监测系统状态的工具,不但可以用来监视进程.服务.文件.目录.文件系统,还可以在服务 down 掉的时候自动重启服务或者当某个进程占用过多的资源的时候自动停掉进程,并且支持 Ema ...

  2. mysql主备部署[高可用]

    配置方案 master:192.168.99.61 service-id:61 slave:192.168.99.62 service-id:62同步账号:sync   同步密码:sync 主:192 ...

  3. Unity3D之预设

      预设的两个特性: 1.重用性.可以使我们快速方便的创建大量的重复性资源.这种创建是通过预设的实例化Instance操作来完成的 在Hierarchy视图中将实例物理添加到Assests中,此时图标 ...

  4. Json解析类

      Json解析类 定义两个辅助类 public class JSONObject : Dictionary<string, object> { } public class JSONAr ...

  5. NOIP 华容道

    描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B 玩的华容道与经典的 ...

  6. Linux文件时间详解ctime、mtime、atime【转】

    本文转载自:http://blog.csdn.net/doiido/article/details/43792561 Linux系统文件有三个主要的时间属性,分别是 ctime(change time ...

  7. centos 安装iftop

    iftop是linux下的一个流量监控工具,用于查看实时网络流量.官网:http://www.ex-parrot.com/pdw/iftop/ 1.安装必须软件包yum install libpcap ...

  8. C#中配置文件保存的路径

    http://www.codeproject.com/Tips/350010/Saving-User-Settings-in-Winform-Application 外网上找的资料 winform提供 ...

  9. Luogu P1533 可怜的狗狗

    题目链接:https://www.luogu.org/problemnew/show/P1533 没人写$fhq\ treap$做法,那我就补一篇qwq 看到这题第一时间想主席树,然后发现我还没学主席 ...

  10. $.cookie()取值设置

    本文为博主原创,未经允许不得转载: 使用jquery.cookie.js中的cookie做了一个折叠式菜单栏,用cookie保存会话的值,其中的值为点击菜单栏时,即在cookie中 保存对应的值,保证 ...