XSS漏洞的原理

  XSS是应用最为广泛的web安全漏洞之一,全称为跨站脚本攻击(cross site scripting),从名称来看,应该是css,但是和层叠样式表重叠,所以称为XSS,另外,在英文中的关键词是scripting,即和脚本有关,后面慢慢体会。

  

  这个名字是和他的来历有关的,因为第一次演示这个漏洞的黑客是通过跨站的方式植入脚本进行攻击的。

  

  XSS漏洞的主要原理就是通过一切可能的手段将可以执行的脚本植入到页面的代码中,从而对用户进行攻击。 即实质上就是把代码植入到对方的系统中去,由于xss漏洞是对web客户端的攻击,所以说植入的代码基本上是以JavaScript和html标签为主。

  比如对于一个简单的留言板,在点击了发送之后,内容随之显示出来, 但是, 如果黑客输入了一段脚本,这段脚本就有可能被浏览器执行,通过这种方式,可能就会攻击用户。

  

  xss的类型主要可以分为持久性xss和非持久性xss,

  其中持久性xss就是将客户端攻击的脚本植入到服务器上,从而导致每个正常访问页面的用户都可以遭到xss脚本的攻击 

  非持久性xss是对一个页面的url中的某个参数做文章,把精心构造的脚本包含到url参数中,然后散步到网上,骗取用户访问这个url,从而来进行攻击。 散布的方式可以是美女图片等等。真实的目的就是为了骗取用户访问这个url。

  非持久型的xss安全威胁小,因为只要服务器端业务代码稍作调整就会是之失效。

  所以持久性的xss攻击影响力大,有时候服务器端需要删除好几张表,查询很多库,才能将由恶意代码的数据全部清除。

  

  通过xss能做什么事情?

  一般绝大多数的网络攻击都是把xss作为漏洞链中的第一环,通过xss,黑客可以得到最为直接的利益就是拿到用户浏览器的cookie, 然后皆可以劫持session,进而窃取用户的账号。

  将xss配合csrf和sql注入等漏洞,可以在短时间内对一个服务器发起攻击,并且服务器端无法将ip封死,因为ip是成百上千的xss受害者的ip

  

  如今的css相比网上的很多资料中,在技术上已经发生了很大的变化,因为各大网站已经加强了对于js脚本、html标签等关键信息的过滤,单纯依靠植入js是很难实施攻击的了。

  

    

CSRF漏洞原理

  CSRF即为跨站请求伪造,我们主要将之分为狭义的CSRF和广义的CSRF。

  

  狭义的csrf是指黑客通过将代码植入到受害用户的浏览器访问页面的前提下,用受害人的身份向服务器发起一个伪造的http请求,从而实现服务器CURD来执行相关操作。   这种原理比较简单,实现起来也不是很复杂, 只要写几行js代码就行。 

  这是绝大多数所讲的方式。

  广义的csrf指csrf不一定要借助受害用户的浏览器,黑客可以通过自己写一个脚本伪造出一个和真实的http请求一模一样的数据包发送给你的服务器,前提是你这个http接口中的所有参数都是可以预期的。 

可以看出,本质上来说,csrf漏洞就是将一个http接口中需要传递的参数都预测出来,不管用什么方式,都可以来调用你的接口,对服务器实现curd。

关键在于: 如果希望实现csrf, 要么先找到xss漏洞,然后将黑客的恶意代码植入到页面中去,以此来实现狭义的csrf; 要么就构造出一个url,将参数设置好,然后把url贴上骗用户来访问这个URL。 

所以,csrf和xss这两个漏洞结合起来,将会爆发出巨大的威力。

  

  

如何防御csrf?

  一种方式就是使用token和reffer的防御方法,可以起到一定的作用,但不是绝对安全的。

  实现方式:一个网站有很多web页面,可以吧token播种一样的埋在页面上,然后所有的rest接口要求传递token,如果不传递token或者是token无效,就直接驳回请求。token不一定是种在页面里的 ,也可以藏在前端页面中的任何位置 ,只要前端js可以获取到,就可以在每个ajax请求中带上token,这样就可以成功请求了。

  另外,可以在rest接口中对所有的请求头的referrer做一个判断,只允许网站的几个固定页面可以调用当前接口,这样对于广义的csrf和狭义的csrf都是由一定的作用的。

  但是token藏的再隐蔽,reffer限制的再严格,这一切都会暴露在前端,所以黑客可根据网站前端代码进行分析,然后写一套脚本自动化抓取token,然后对你的rest接口实施攻击,这样,这些努力都是白费了。   

  

  另一种有效的方式就是使用验证码了。

  这是一种非常强大的方式,比较多的就是图形验证码,还有12306的验证码,这种方式破解验证码的代码极高,所以可以防御99%以上的csrf。 

  但是不可能所有接口都是用验证码,这样用户体验会很差,所以 比较好的方式是尽量减少图形验证码的使用,对于一些操作不敏感的接口使用token+referrer来防御。

  

  但是图形也不是绝对安全,因为目前图像识别已经很先进,简单的还是可以破解的。

  

  

转载于:https://www.cnblogs.com/zhuzhenwei918/p/6053955.html

XSS、CSRF与验证码等等相关推荐

  1. XSS CSRF 攻击

    XSS CSRF 攻击 XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery)定义: 跨网站脚本(Cross-si ...

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

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

  3. 吃透浏览器安全(同源限制/XSS/CSRF/中间人攻击)

    前言 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,特别是前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网 ...

  4. 常见(XSS|CSRF)六大Web安全攻防解析

    作者:浪里行舟 前言 在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷.如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型以及防御的方法. 一.XSS ...

  5. 常见的前端安全问题(xss / csrf / sql / ddos / cdn...)

    目录 1. xss(Cross Site Scripting)跨站脚本攻击 1.1 持久型(存储型)攻击 / 非持久型(反射型)攻击 是什么? 1.2 xss 出现的场景?造成的危害? 1.3 防御 ...

  6. xss,csrf,xsrf

    Xss跨站脚本攻击(Cross Site Scripting) 原理: HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之 ...

  7. Xss Csrf 简介

    一.Js在web的执行环境 1.直接触发 •在HTML页中插入<script></script>脚本标记.JS嵌入到HTML中的两种方式: •1)直接嵌入<script& ...

  8. XSS,CSRF防范 也是慢慢更

    2019独角兽企业重金招聘Python工程师标准>>> xss攻击两种 reflected  和stored 如xss可以获取用户的cookie <script>aler ...

  9. web常见漏洞解析 注入 xss csrf 文件上传 文件包含 -dvwa演示

    注(以下环境皆是自己在本机搭建,请勿在公网真实操作) 1.注入 1.1 SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶 ...

最新文章

  1. python流程控制-python之流程控制
  2. 取消gVim自动生成备份文件~文件
  3. 设置elementUI的table组件滚动条位置
  4. html5 内嵌网页_如何分析并优化网页的性能?新梦想软件测试
  5. 图片服务 - thumbor过滤器
  6. pycharm终端运行python文件_在PyCharm终端中执行python manage.py..._慕课问答
  7. 实现机器学习的循序渐进指南XII——Apriori
  8. 穷人变富的过程中,最大的阻碍是什么?
  9. 第一篇:你不一定了解的推荐系统
  10. 苹果mac pdf编辑器:Acrobat Pro DC
  11. 运气真不错:3月取到的TeaVM恰好能够运行,之前之后都有问题
  12. python3 numpy安装 linux_Linux 下安装 numpy 和 scipy
  13. 合金理论自动化工具包(Alloy-Theoretic Automated Toolkit:ATAT)的安装
  14. php 获得京东的数据,利用php封装函数抓取京东商城省市县数据
  15. 微信开放平台:微信扫码登录功能
  16. 5G+北斗融合定位技术介绍
  17. Unity3D游戏高性能战争迷雾系统实现
  18. qq邮箱mx服务器,QQ域名邮箱管理系统MX记录是什么?怎么添加设置?
  19. Excel VBA 根据单元格内容更改工作表名称
  20. java 生成短链接_java调用百度API生成短链接(一)

热门文章

  1. 浅谈Hybrid技术的设计与实现第二弹
  2. JavaScript知识(二)
  3. 非常优秀的swiper插件————幻灯片播放、图片轮播
  4. ASP.NET MVC 5 学习教程:添加查询
  5. Happy Programming Contest
  6. JavaScript数组去重的常用方法
  7. 为什么要挖Chia币
  8. 无需充电的太阳能汽车有多强?约17万起,续航高达1609km
  9. 今年因为疫情很多信用卡逾期,结果会怎么样?
  10. 地球绕太阳一圈有多远