前言

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

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. 03: JavaScript基础

    目录: 参考W3school 1.1 变量 1.2 JavaScript中数据类型 1.3 JavaScript中的两种for循环 1.4 条件语句:if.switch.while 1.5 break ...

  2. Duilib 实现右下角弹出像QQ新闻窗口,3秒后窗口透明度渐变最后关闭,若在渐变过程中鼠标放到窗口上,窗口恢复最初状态(二)

    效果: 1.定义两个个定时器ID #define ID_TIMER_DISPLAY_DELAY 30 #define ID_TIMER_DISPLAY_CLOSE 40 2.添加一个成员函数和成员变量 ...

  3. 在Android studio中到入Eclipse

    由于无法在AS中直接导入Eclipse的原始包,所以需要先把Eclipse的包导出成Gradle包,这个Gradle包可以别两个环境识别. 1.在Eclipse中导出Gradle包.选择需要从Ecli ...

  4. python数据库编程小应用

    python DB api 数据库连接对象connection数据库交互对象cursor数据库异常类exceptions 流程:开始创建connection获取cursor执行查询.执行命令.获取数据 ...

  5. openwrt的编译方法

    1.获取最新包 ./scripts/feeds update -a 2.安装包 ./scripts/feeds install -a 3.配置 make menuconfig 4.编译 make -j ...

  6. ubuntu查询某个库的相关情况

    环境:Ubuntu 14.04 64bit 1.如:查询libjpeg库的位置 ldconfig -p |grep libjpeg 2.如:查询libjpeg库的相关名称 dpkg -l '*jpeg ...

  7. SPOJ Hacking(字典树 + 搜索)题解

    思路1:字典树存每个串,然后dfs遍历是否存在.这里有个技巧,如果每次都重新初始化字典树为-1,那么会超时,所以我先初始化为-1,然后设一个Case,每个test时Case都++,那么只要开一个数组判 ...

  8. TeeChart设置图表的标题

    TeeChart的图表的标题设置方法 tChart1.Header.Text = "图表"; tChart1.Header.Lines = new string[] { " ...

  9. 【java工具类】java做的一个xml转Excel工具,基于maven工程

    说明:适合数据库导出为xml时转成Excel 本工具将上传至GitHub:https://github.com/xiaostudy/xiaostudyAPI3 doc4j的maven依赖 <!- ...

  10. 返回json格式数据乱码

    本文为博主原创,未经允许不得转载: 原本返回json格式数据的代码: @ResponseBody @RequestMapping(value = "getListByTime", ...