一、概念:
XSS攻击全称跨站脚本攻击(Cross Site Scripting);
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF;
二、XSS
什么是 XSS ?
XSS (Cross Site Scripting),即跨站脚本攻击,是一种常见于 Web 应用中的计算机安全漏洞。恶意攻击者往 Web 页面里嵌入恶意的客户端脚本,当用户浏览此网页时,脚本就会在用户的浏览器上执行,进而达到攻击者的目的。比如获取用户的 Cookie、导航到恶意网站、携带木马等。借助安全圈里面非常有名的一句话:
所有的输入都是有害的。
这句话把 XSS 漏洞的本质体现的淋漓尽致。大部分的 XSS 漏洞都是由于没有处理好用户的输入,导致恶意脚本在浏览器中执行。任何输入提交数据的地方都有可能存在 XSS。
XSS 脚本攻击案例:
新浪微博遭受 XSS 攻击
人人网遭受 XSS 攻击
在这里使用一个简单的例子测试XSS:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>测试是否存在xss漏洞</title>
</head>
<body>
<span>输入评论:</span>
<input type="text" value="" placeholder="请输入您的评论" id="comment">
<input type="button" value="提交" id="submit">
<p>
<span>您的评论:</span>
<span id="commentList"></span>
</p>
<script>
document.getElementById("submit").addEventListener("click",function(){
let comment = document.getElementById("comment").value
document.getElementById("commentList").innerHTML = comment
})
</script>
</body>
</html>
注意:使用innerHtml插入代码,只是当作普通的html执行,js解析器不会执行js脚本。
XSS 攻击分类
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>xss漏洞广告页面</title>
<style>
a {
text-decoration: none;
font-size: 2rem;
}
img {
width: 8rem;
height: 8rem;
}
</style>
</head>
<body>
<a href="attack.html?content=<img src='aaa.png' onerror='alert(1)'/>">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1520930605289&di=04f8835509d8c3c3fac4db7636247431&imgtype=0&src=http%3A%2F%2Fpic.58pic.com%2F58pic%2F13%2F14%2F16%2F37J58PICWTD_1024.jpg">
</a>
<a href="attack.html?content=<img src='aaa.png' onerror='while(true)alert(/关不掉/)'/>">敏感词汇</a>
<script>
</script>
</body>
</html>
反射型
用户在页面输入框中输入数