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 注入很远了.但是 ...
随机推荐
- SqlCommand.Parameters的使用
在c#中执行sql语句时,避免会遇到传参的问题.Parameters就是用来做参数化查询,不然很容易被黑客拿到数据. 一.简介 引用自:https://msdn.microsoft.com/ZH-C ...
- vcenter新建虚拟机centos7作为虚拟机模板
网卡选项 适配器类型算则E1000 Remote console选项 电源选项 加密 打开电源,连接iso安装系统 按一下tab键,修改网卡为eth0 点击Tab,打开kernel启动选项后,增加ne ...
- NYOJ
爬行的蚂蚁 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有N只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行.当蚂蚁爬到竿子的端点时就会掉落.由于竿子太细,两只蚂 ...
- 利用python打印字符
python unicode ('你好','UTF-8') print u'\u4f60\u597d'
- cf1154G 埃氏筛应用
直接用埃氏筛也可以做,但是这题写起来有点恶臭.. 更加简单的写法是直接枚举gcd=k,然后里面再枚举一次i*k,即找到k两个最小的倍数,看起来复杂度很高,但其实也是埃氏筛的复杂度 因为每次枚举gcd, ...
- Android Studio打开项目,停在gradle的解决方案
之所以停留,是因为打开项目时,Android Studio解析项目使用的gradle,并下载对应版本的gradle,但是由于下载gradle的服务器在国外,这个下载速度非常不稳定,从而导致停留在这一步 ...
- 连接mysql报zone时区错误
报错信息: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zon ...
- linux无法联网使用yum提示cannot find a valid baseurl for repobase7x86_64
每次安装新镜像时会遇到物理机有网络新安装的linux中却无法与物理机通信(不能连网),只能玩一些预装功能.命令,无法使用各种常用工具(特别是MINI版连ifconfig都没有o(╥﹏╥)o),下面记录 ...
- 安装Pycharm——靠谱的Pycharm安装详细教程
1.首先去Pycharm官网,或者直接输入网址:http://www.jetbrains.com/pycharm/download/#section=windows,下载PyCharm安装包,根据自己 ...
- element ui table单选框点击全选问题
<template slot-scope="scope"> <el-radio-group v-model="scope.row.HandleState ...