XSS 与 CSRF 跨站攻击
先做个名词解释:
XSS:跨站脚本(Cross-site scripting)
CSRF:跨站请求伪造(Cross-site request forgery)
看了估计也不清楚什么意思吧?
那么,详细解释下:
XSS: 其实就是Html的注入问题,攻击者的输入没有经过严格的控制进入了数据库,最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行Html代码。
一个例子:某文章的评论区,某个攻击者输入一段js代码作为评论:windows.alert("我是攻击者"); , 这段评论提交之后,服务端没有经过严格校验,就直接入库,下次有用户浏览这个文章时,这段评论会加载并作为html、js被浏览器解释执行,然后,用户就看到了“我是攻击者”的弹窗了。
以上是一个无恶意的攻击例子,如果攻击者有恶意的话。。。获取你的cookie,使用cookie登录你的账户,转账。。
CSRF:主要利用用户浏览器的cookie来进行的攻击行为。
假设有恶意网站X,页面上有这么一段代码:
<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
这段代码会尝试从mybank中,往我的账户转账1000元。这个行为大部分情况会失败,因为这个转账接口是需要登录后的授权信息的。但是,
如果用户先登录了mybank, 然后不小心(比如在qq收到连接并点击了)打开恶意网站X,那么,这个攻击就生效了。登录mybank后,会产生mybank的授权cookie, 网站X请求mybank时,浏览器会带上授权cookie,导致被攻击。
如何防御
xss相对比较好防御,只要对输入进行过滤即可,现在很多webframework都提供了输入校验和xss过滤工具
csrf就不是那么好防御了。它是请求伪造,服务端要识别出这个是伪造的请求是有难度的,这个大概有几个防范思路
1、提高伪造的难度,比如不要随便通过HTTP GET来提交、操作数据,GET太容易被攻击了。GET方式的url可以轻易被各种途径传播。
2、服务端增加请求令牌, 这个令牌不写入cookie,每次返回给用户的页面带有这个随机生成的令牌,用户提交数据时,这个令牌作为隐藏域也一同提交,只有验证令牌一致,才可提交成功。嗯,增加了破解难度,但也不是无法破解,可以通过获取htm代码的方式获取令牌。
3、使用验证码, 这个方式比较安全了, 复杂的验证码不是那么容易破解的,有时候连人自己都认不出来。所以同样的,这种方式也给了用户非常不好的使用体验,慎重使用。
4、增加referer来源页判断,可以防一些小白(其实很多攻击者都是小白,从这点上看,还是很有效的)。
XSS 与 CSRF 跨站攻击的更多相关文章
- XSS/CSRF跨站攻击和防护方案
Xss(Cross Site Scripting 跨站脚本攻击)/CSRF(Cross-site request forgery 跨站请求伪造),它与著名的SQL注入攻击类似,都是利用了Web页面的编 ...
- SpringSecurity框架下实现CSRF跨站攻击防御
一.什么是CSRF 很多朋友在学习Spring Security的时候,会将CORS(跨站资源共享)和CSRF(跨站请求伪造)弄混,以为二者是一回事.其实不是,先解释一下: CORS(跨站资源共享)是 ...
- web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入
web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...
- Nancy启用跨站攻击防护(CSRF)
什么是CSRF(跨站攻击) 可能很多人已经对CSRF有所了解,就简单的介绍下: CSRF全程是 Cross-Site Request Forgery .大概意思就是在登录用户不知情的情况下,由一个网站 ...
- XSS与CSRF两种跨站攻击比较
XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态SQL 语 ...
- 总结 XSS 与 CSRF 两种跨站攻击
前言 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了 ...
- 总结XSS与CSRF两种跨站攻击
XSS:跨站脚本(Cross-site scripting),实际应是"CSS",但由于和层叠样式表CSS名称冲突,故改为"XSS" CSRF:跨站请求伪造(C ...
- XSS 与 CSRF 两种跨站攻击
在前几年,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式, 但是现在参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了.但是历史同样悠久的 ...
- XSS与CSRF两种跨站攻击总结
在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是 ...
随机推荐
- PHP—-模型MODEL 一对多
假如有两个表,菜品和菜品种类,菜品的关联外键是food_type_id, 所以在菜品的model中应该写 public function foodType(){ return $this->be ...
- java 运算符的了解和运算符的优先级
Java 语言支持如下运算符: 算术运算符: +,-,*,/,%,++,-- 赋值运算符 = 扩展赋值运算符:+=,-=,*=,/= 关系运算符: >,<,>=,<=,==,! ...
- jmeter测试wordpress使用base64进行鉴权
1.下载插件 对密码进行加密 2.安装插件 3.使用插件 4.使用base64对上面获取到的密码进行二次加密 echo -n "用户:密码" | base64 将以上命令键入lin ...
- VC调用静态库、动态库
静态库 // 相对路径 或者 绝对路径 #include "yourlib.h" //相对路径 或者 绝对路径 #pragma comment(lib, "yourlib ...
- 数字滚动特效 NumScroll
1.使用前先引入jquery2.前端学习群:814798690 下载地址 https://github.com/chaorenzeng/jquery.numscroll.js.git 快速使用 1.引 ...
- MNIST数字识别问题
摘自<Tensorflow:实战Google深度学习框架> import tensorflow as tf from tensorflow.examples.tutorials.mnist ...
- python全栈开发day111-flask路由及其参数,Flask配置,蓝图,几个装饰器、闪现、send_file、jsonify
1.endpoint参数,解决视图函数重名问题(包括装饰后重名问题) http://www.cnblogs.com/eric-nirnava/p/endpoint.html 每个应用程序app都有一个 ...
- 02.Control
01.if ''' 제어문 = 조건문(if) + 반복문(while, for) 조건문 기본 형식1) python 블럭 if 조건식 : 실행문 실행문 cf) c언어 블럭 if 조건식 { ...
- 即将上线的Imcash是何方神圣?
区块链的诞生,让数字资产来到这个时代,每个人的财产分布又多了一种十分重要的选择. 当下每个人最需要的就是一款优秀的数字资产管理平台,目前市面上各种平台层出不穷,在线管理.离线管理.全节点钱包.轻钱包. ...
- Kali Linux常用服务配置教程获取IP地址
Kali Linux常用服务配置教程获取IP地址 下面以Kali Linux为例,演示获取IP地址的方法 (1)设置网络接口为自动获取IP地址.在Kali Linux的收藏夹中单击图标,将显示所有的程 ...