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注入,跨 ...
随机推荐
- 《C++ Primer (V4)》读书笔记
第2章 变量和基本类型 1.(P56)如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为private:如果使用struct关键字,那么这些成员都是public. 第7 ...
- hibernate createQuery和createSQLQuery 查询结果count计算
createQuery 针对hql语句查询 Query query=getSession().createQuery(hql);int result =((Number) query.iterate( ...
- LA 3942 && UVa 1401 Remember the Word (Trie + DP)
题意:给你一个由s个不同单词组成的字典和一个长字符串L,让你把这个长字符串分解成若干个单词连接(单词是可以重复使用的),求有多少种.(算法入门训练指南-P209) 析:我个去,一看这不是一个DP吗?刚 ...
- Redis配置总结
一:常用配置 1.bind,格式为bind 127.0.0.1:这个是很重要的配置,如果bind 127.0.0.1则外部网络是访问不了的(如果外部网络要访问还要开放端口) 2.port,格式为por ...
- C语言中 指针的基础知识总结, 指针数组的理解
1: 指针变量所占的字节数与操作系统为位数有关,64位操作系统下,占8个字节,32位操作系统下,占4个字节 2: 指针变量的本质是用来放地址,而一般的变量是放数值的3: 脱衣服法则: a[2] 变成 ...
- MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案
第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...
- (线段树) Count the Colors --ZOJ --1610
链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82832#problem/F http://acm.zju.edu.cn/onli ...
- (线段树 点更新 区间求和)lightoj1112
链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88230#problem/D (密码0817) Description Robin ...
- Vivado级联Modelsim仿真Re-launch问题
前两天在群里看到有朋友说Vivado级联Modelsim仿真出现修改设计代码后重新run do文件,波形没有随着代码修改而改变,这个问题博主之前没有注意到,因为把Vivado和Modelsim级联好后 ...
- Beyond Compare脚本:命令行批量比较文件并生成html格式的差异报告
BComp.exe /silent /closescript /solo @E:\compareTest\BCbatch.txt text-report layout:side-by-side opt ...