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注入,跨 ...
随机推荐
- 破解Unity5.3.4f1
破解的目的是将受限的个人版变为全功能的Pro版,破解后就可以使用所有功能了,界面也变成了黑色的主题. 破解网址(支持最新版的5.3.4f1): http://www.ceeger.com/forum/ ...
- angularjs写公共方法
'use strict'; angular.module('fast-westone') .factory('commonUtilService', function () { return { /* ...
- origin里用c语言编程
学习自白东升老师的origin8.0课程. 其实是originC语言.origin中大多绘图和处理功能都是originC语言完成的,可以同时按下ctrl和shift然后点击相应的功能,就会出现每个按钮 ...
- SPSS--回归-多元线性回归模型案例解析
多元线性回归,主要是研究一个因变量与多个自变量之间的相关关系,跟一元回归原理差不多,区别在于影响因素(自变量)更多些而已,例如:一元线性回归方程 为: 毫无疑问,多元线性回归方程应该为: 上图中的 x ...
- loadrunner提高篇 - 关联技术的经典使用
关联函数是一个查找函数,即是从HTML文件内容中查找需要的值,并将其保存在一个变量或数组中.换一个角度看,关联函数不单单可以匹配一些变化的值,同样可以匹配一些固定的内容,并将其保存到一个数据组,供后续 ...
- AQS详解(AbstractQueuedSynchronizer)
Intrinsic VS explicity 1. 不一定保证公平 1. 提供公平和非公平的选择 2. 无 2. 提供超时的 ...
- B-tree B+tree适合文件系统索引和MySQL索引
B-树 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树 它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点.下图是 B-树的简化图. B-树 ...
- 结对编程-四则运算生成器(java实现)
结对伙伴:陈振华 项目要求 1.题目:实现一个自动生成小学四则运算题目的命令行程序. 2.需求: 1. 使用 -n 参数控制生成题目的个数 2. 使用 -r 参数控制题目中数值(自然数.真分数和真 ...
- [FMX]将 Android 程序切换到后台及从后台切换到前台实现
有时候,我们需要将自己的Android程序切换到后台运行,在必要时,将其切换到前台运行.下面提供了一种实现方式,首先需要引用三个单元: 1 uses Androidapi.JNI.App,Andr ...
- 在 IIS8 中保持网站持续运行
在早期版本的 IIS 中执行轮询任务不那么可靠.应用程序池回收后,网站不会自动重启,在新的请求激活应用程序之前,轮询任务不起作用.为了解决这个问题,需要引入外力驱动 Web 端执行任务,如图: 此方式 ...