XSS、CSRF与验证码等等
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来防御。
但是图形也不是绝对安全,因为目前图像识别已经很先进,简单的还是可以破解的。
XSS、CSRF与验证码等等的更多相关文章
- 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)
关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...
- DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对这个漏洞的利用方式进行简单的概括 . 这个漏洞的利用前提是需要登录到后台进行操作 ...
- XSS CSRF
XSS CSRF XSS 参考 https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC ...
- XSS/CSRF跨站攻击和防护方案
Xss(Cross Site Scripting 跨站脚本攻击)/CSRF(Cross-site request forgery 跨站请求伪造),它与著名的SQL注入攻击类似,都是利用了Web页面的编 ...
- 深入理解OAuth2.0 XSS CSRF CORS 原理
基于Token的WEB后台认证机制 http://www.cnblogs.com/xiekeli/p/5607107.html 深入理解OAuth2.0协议http://blog.csdn.net/s ...
- Web攻防之XSS,CSRF,SQL注入
摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...
- XSS CSRF 攻击
XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery)定义: 跨网站脚本(Cross-site scripting ...
- XSS,CSRF,Cookie防劫持的处理
Cookie与sessionHTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护 ...
- Web攻防之XSS,CSRF,SQL注入(转)
摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...
随机推荐
- hadoop学习笔记(五):java api 操作hdfs
HDFS的Java访问接口 1)org.apache.hadoop.fs.FileSystem 是一个通用的文件系统API,提供了不同文件系统的统一访问方式. 2)org.apache.hadoop. ...
- 深入浅析JavaScript中with语句的理解
JavaScript 有个 with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式. 也就是在指定的代码区域, 直接通过节点名称调用对象. with语句的作用是暂时改变 ...
- java获取变量的类型
对于简单类型变量,是无法直接获得变量类型的://要想获取,必须自定义函数进行返回 对于包装类型变量,是可以直接获得的,变量名称.getClass().getName(); java中获取变量的类型可以 ...
- 系统目录APK更新——权限问题
package com.example.wx; import java.io.File;import java.io.FileOutputStream;import java.io.IOExcepti ...
- Scala偏函数与部分函数
函数 1.部分函数 部分应用函数(Partial Applied Function)是缺少部分参数的函数,是一个逻辑上概念. def sum(x: Int, y: Int, z: Int) = x + ...
- SPFA穿越虫洞——负权回路得判断
poj3259 题目大意:穿越虫洞可以回到过去(时间--)所以能不能让时间倒流呢,就是判断有没有负权回路这次尝试用SPFA算法,也可以复习一下链式前向星 准备工作,队列q,spfa算法得有点就在于这个 ...
- handsontable 问题
碰到问题了,去官网上找community:http://docs.handsontable.com/0.16.1/tutorial-quick-start.html 1. 描述:把handson ta ...
- jsp ckeditor ckfinder
我认为对的事情,有可能是完全错的. 这篇教程很好: http://www.cnblogs.com/yuepeng/archive/2013/04/01/2992097.html 只看到9,权限控制还没 ...
- 基于SketchUp和Unity3D的虚拟场景漫游和场景互动
这是上学期的一次课程作业,难度不高但是也一并记录下来,偷懒地拿课程报告改改发上来. 课程要求:使用sketchUp建模,在Unity3D中实现场景漫游和场景互动. 知识点:建模.官方第一人称控制器.网 ...
- Python学习(一)——数据类型
在大学学过一点python,只学了语法,关于实际应用却没怎么用过.现在用一些python的脚本来模拟webservices,挺好用的.这个语言,还是要好好学习学习了. 目前看着教材来的,这本教材,好像 ...