XSS:跨站脚本(Cross-site scripting) 强调方法
CSRF:跨站请求伪造(Cross-site request forgery) 强调效果
B打开这个网页或脚本,这个网页或脚本就会访问硬盘里面的信息,并悄悄的把信息发给B
攻击方法2:
A的浏览器已经登录了自己的网银,或其它网站。
B发给A一个网址,A打开这个网址。
这个页面中的脚本向网银网址发送post转账请求。(即使网银网址不允许跨域访问,但是他还是会处理这个post请求,因为跨域访问,服务端是有相应的,只是浏览器发现服务端不支持跨域访问,就直接抛掉服务端发过来的应答消息)
预防方法1:银行服务端检查referer字段,看看post是不是从自己的网页发过来的。(B是否可以修改post消息中的referer字段?)
预防方法2:银行服务端每次生成一个随机值,放在在网页和cookie中。post请求时,必须把这两个值都带过来,且两个值相同,才认为网页是自己的。(B发出的post,cookie中的随机值是正确的,但是B不知道随机值是什么,所以只能瞎猜,猜中概率极低)
攻击方法3:
A网站的转账操作,是一个get消息
CSRF:跨站请求伪造(Cross-site request forgery) 强调效果
CSRF为跨站请求伪造,其与XSS有点类似,不过区别在于CSRF不一定依赖于JavaScript
其实二者是交叉的。
XSS:
XSS跨站脚本攻击过程最简单演示
https://blog.youkuaiyun.com/smstong/article/details/43561607
https://www.cnblogs.com/lovesong/p/5199623.htmlCSRF
攻击方法1:
A给B发一个网址,B打开后,会自动下载一个网页或脚本到电脑硬盘上。B打开这个网页或脚本,这个网页或脚本就会访问硬盘里面的信息,并悄悄的把信息发给B
攻击方法2:
A的浏览器已经登录了自己的网银,或其它网站。
B发给A一个网址,A打开这个网址。
这个页面中的脚本向网银网址发送post转账请求。(即使网银网址不允许跨域访问,但是他还是会处理这个post请求,因为跨域访问,服务端是有相应的,只是浏览器发现服务端不支持跨域访问,就直接抛掉服务端发过来的应答消息)
预防方法1:银行服务端检查referer字段,看看post是不是从自己的网页发过来的。(B是否可以修改post消息中的referer字段?)
预防方法2:银行服务端每次生成一个随机值,放在在网页和cookie中。post请求时,必须把这两个值都带过来,且两个值相同,才认为网页是自己的。(B发出的post,cookie中的随机值是正确的,但是B不知道随机值是什么,所以只能瞎猜,猜中概率极低)
攻击方法3:
A网站的转账操作,是一个get消息
B网址中,可以写上 src=“转账url”,从而实现非法转账
今天尝试进行了一下CSRF攻击,每次发出的请求都没有被攻击网址的cookie
关键是要加上下面红色代码
function state_Change(){
if (xmlhttp.readyState==4)
console.log('99999999999', xmlhttp.status, xmlhttp.responseText);
}
xmlhttp=new XMLHttpRequest();
xmlhttp.withCredentials = true;//支持跨域发送cookies
xmlhttp.onreadystatechange=state_Change;
xmlhttp.open("GET","http://127.0.0.1:5000/hello/",true);
xmlhttp.send(null);