带你了解CSRF和XSS(一)

  浏览器的同源策略限制了一些跨域行为,但仍有些特例(img、iframe、script标签)不受跨域限制,这就给XSS攻击创造了机会(这彻底不是同源策略的锅,必定是程序员的锅)。html

  在讲下面的内容前,仍是要提一下Cookie,Cookie是用来辨别用户身份的重要依据。来作个形象的比喻,有一天,小A去了一家新开的理发店,店里的托尼老师不认识小A,因而小A就办了一张VIP卡,当小A第二次去这家理发店的时候,店里的托尼老师刷了下小A的卡,想起来了你是小A啊,今天搞什么样的造型啊~ Cookie就是那张VIP卡,用于辨别用户身份。前端

  Cookie包含如下几个属性jquery

  采用 Name = Value 的键值对形式存储数据,Name是惟一的程序员

  Domain:域名,限制哪些域名下可使用(该VIP卡仅限本店使用)数据库

  Path:路径,只有这个路径前缀的才可用(该VIP卡仅限烫头)跨域

  Expires:过时时间(该VIP卡有效期一年)浏览器

  HTTP(HTTPOnly):只有浏览器请求时,才会在请求头中带着,JavaScript没法读写服务器

  Secure:非HTTPS请求时不带cookie

  SameSite:用于定义cookie如何跨域发送app

  Cookie就先简单说到这里,回到XSS攻击,后续讲到的XSS和CSRF攻击都会围绕着怎么获取Cookie来举例。

 

  XSS(Cross-site-Script跨站脚本攻击),一般是带有页面可解析内容的数据未经处理直接插入到页面上解析形成的。XSS根据攻击脚本的引入位置来区分为存储型XSS、反射型XSS以及MXSS(也叫DOM XSS)三种。

         根据上面的描述来举个例子:
         假设有一个论坛存在XSS漏洞,用户小A在该论坛的一篇帖子中留言到

  当小A写的留言被该论坛保存下来以后,若是有其余的用户看到了这条评论(至关于打开了这个页面,执行了hark.js,hark.js里面内容大体是获取Cookie,发送请求),那么这些用户的Cookie都会发送到小A事先写好的信息收集网站中进行保存,而后小A就能够用这些Cookie进行登陆啦。

  上述这种XSS攻击属于存储型,提交的代码会被存储在服务器端,下次请求目标网站时不用再提交XSS代码。因此这种类型的主要缘由是前端提交的数据未经处理直接存储到数据库,而后从数据库中读取出来后直接插入到页面中致使的。

 

继续讲故事:

         假设有一个网站lalala存在XSS漏洞,网址是http://www.lalala.com。而后有一天小A在邮件里发现一封邮件,内容是一张你懂得图片而后配下面的标签。

  小A好奇啊,而后就点了进去,若是在此以前小A登陆过lalala网站,那么他的Cookie就被盗走了。

  这种XSS攻击属于反射型,发出请求时,XSS代码出如今URL中,做为输入提交到服务器,服务器解析后响应,XSS代码随着响应内容一块儿传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫作反射型XSS。

 

  MXSS则是在渲染DOM属性时将攻击脚本插入DOM属性中被解析而致使的。

至此,三种类型的XSS攻击都描述完了,你看确实都是程序员的锅吧。

         服务端能够作如下动做:

         一、刚刚上面讲到Cookie中有个属性时HTTP,设置为True,不容许JavaScript读取cookies,但该属性只适配部分浏览器。对于HTTPS能够设置Secure

         二、处理富文本框输入内容,进行XSS过滤,过滤相似script、iframe、form等标签以及转义存储

         客户端能够作如下动做:

         一、输入检查,和服务端同样都要作。
         二、输出检查,编码转义,若是使用jquery,就是那些append、html、before、after等,插入DOM的方法须要注意。现今大部分的MV*框架在模板(view层)会自动处理XSS问题。

 

         XSS攻击的危害是很大的,像上面的例子注入script能够执行任何的JS代码(意味着能够获取cookie等信息了),注入style能够把页面所有弄崩。尤为是具备评论功能的网站须要注意防范此类攻击,不要相信客户端发送过来的任何数据!还有就是不要乱点开奇奇怪怪的连接啦~

相关文章
相关标签/搜索