前言

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

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程序员的c++与java实现的一些重要细微差别-附完整版pdf学习手册

    0.其实常规的逻辑判断结构.工具类.文件读写.控制台读写这些的关系都不大,熟悉之后,这些都是灵活运用的问题. 学习c/c++需要预先知道的一个前提就是,虽然有ANSI C标准,但是每个c/c++编译器 ...

  2. 03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查

    目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...

  3. 07:urllib与urllib2基本使用

    参考博客:https://blog.csdn.net/chendong_/article/details/51973499 1.1 urllib2发送get请求 # -*- coding:UTF-8 ...

  4. MySQL新建用户保存的时报错:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

    又是这种错, 以前没遇过, 没办法, 直接google. 下面看解决办法: 登录mysql, 当然了如果您登录不上(密码错误情况), 直接扔这个属性进去my.cnf配置文件skip-grant-tab ...

  5. 使用requireJS加载不符合AMD规范的js文件:shim的使用方式和实现原理

    原文链接: http://www.bubuko.com/infodetail-671521.html

  6. 20145333茹翔 Exp8 Web基础

    20145333茹翔 Exp8 Web基础 实验问题回答 (1)什么是表单 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素,表单在 ...

  7. VC++ 实现修改文件创建、访问、修改时间属性(转载)

    转载:http://sunnysab.blog.163.com/blog/static/18037500920134221295425/ struct _FILETIME { //结构体定义 DWOR ...

  8. Python3基础 file open+write 对不存在的txt进行创建与写入

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  9. BZOJ 4552: [Tjoi2016&Heoi2016]排序 线段树 二分

    目录 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 update 10.6 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 /* //fang zhi ...

  10. Elasticsearch-->Get Started-->Exploring Your Cluster

    Version 直接对localhost:9200发出一个get请求 { "name": "WqeJVip", "cluster_name" ...