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注入,跨 ...
随机推荐
- Docker swarm结合Openresty部署rabbitmq集群
Docker swarm结合Openresty部署rabbitmq集群 大家好,年底了,年味儿越来越浓了.2019年的寒冬被定义为未来10年中最好的一年,对于这一说法悲观的人和乐观的人的理解是不一样的 ...
- python corrcoef
该函数得到相关系数矩阵. 例子: vc=[1,2,39,0,8] vb=[1,2,38,0,8] print mean(multiply((vc-mean(vc)),(vb-mean(vb))))/( ...
- 如何开发一个产品级的Node.js 应用
介绍 Node.js是一个开源的javascript运行时环境.非常简单可以快速开发一个网络应用.这个平台运行在Linux.OSX和Windows,而且运行在这个平台上的应用都是用javascript ...
- hdu 1505,1506
1506题目 1505题目 1506: #include<stdio.h> #include<string.h> #include<iostream> using ...
- Need You Now --Lady Antebellum
战地女神(Lady Antebellum)由女主唱 Hillary Scott.男主唱 Charles Kelley .吉他/键盘手 Dave Haywood,2006夏天在美国乡村音乐重镇纳什维尔组 ...
- Android-天气预报Demo-JSON数据解析
在上两篇博客,Android-解析JSON数据(JSON对象/JSON数组),Android-Gson解析JSON数据(JSON对象/JSON数组),是介绍了解析本地文件里面的JSON数据: Andr ...
- Accepted Technical Research Papers and Journal First Papers 【ICSE2016】
ICSE2016 Accepted Paper Accepted Technical Research Papers and Journal First Papers Co-chairs: Wille ...
- Sharepoint 安装部署Project Server
#在SharePoint Central Administration-> Manage service applications中,点击New button,选择Project Service ...
- 对php和java里面的static函数和static的一些理解
static function: "static方法就是没有this的方法.在static方法里面不可以调用非静态方法,反过来是可以的.并且可以在没有创建任何对象的前提下,仅仅通过类名来调用 ...
- ie下警告console未定义
低版本IE6/7/8/9浏览器没有定义console对象,所以代码会中断执行.自己测试,ie11也没有(打开控制台的情况下可以用) 可以用如下代码完美解决. window.console = wind ...