网络攻击-XSS攻击详解

特别提示:本人博客部分有参考网络其余博客,但均是本人亲手编写过并验证经过。如发现博客有错误,请及时提出以避免误导其余人,谢谢!欢迎转载,但记得标明文章出处: http://www.cnblogs.com/mao2080/

一、基础概念

  XSS(Cross Site Scripting)攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种常常出如今web应用中的计算机安全漏洞,它容许恶意web用户将代码植入到提供给其它用户使用的页面中。好比这些代码包括HTML代码和客户端脚本。(摘自百度百科)html

二、主要危害

  一、盗取各种用户账号,如机器登陆账号、用户网银账号、各种管理员账号
  二、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  三、盗窃企业重要的具备商业价值的资料
  四、非法转帐
  五、强制发送电子邮件
  六、网站挂马
  七、控制受害者机器向其它网站发起攻击web

三、攻击方式

  一、反射型

  反射型XSS,也叫非持久型XSS,是指发生请求时,XSS代码出如今请求URL中,做为参数提交到服务器,服务器解析并响应。响应结果中包含XSS代码,最后浏览器解析并执行。从概念上能够看出,反射型XSS代码是首先出如今URL中的,而后须要服务端解析,最后须要浏览器解析以后XSS代码才可以攻击。数据库

  这类一般使用URL,具体流程:浏览器

  一、Alice给Bob发送一个恶意构造了Web的URL。
  二、Bob点击并查看了这个URL。
  三、恶意页面中的JavaScript打开一个具备漏洞的HTML页面并将其安装在Bob电脑上。
  四、具备漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。
  五、Alice的恶意脚本能够在Bob的电脑上执行Bob所持有的权限下的命令。安全

  举个列子:

  http://localhost:8080/helloController/search?name=<script>alert("hey!")</script>服务器

  http://localhost:8080/helloController/search?name=<img src='w.123' onerror='alert("hey!")'>cookie

  http://localhost:8080/helloController/search?name=<a onclick='alert("hey!")'>点我</a>网络

  服务端代码片断,只作了一个简单的字符串链接就返回给客户端。xss

  

  咱们能够看到Google Chrome是有作处理的相对比较安全,可是Firefox就没有。网站

  

  

  

  二、存储型

  存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不论是数据库、内存仍是文件系统等。),而后在下次请求页面的时候就不用带上XSS代码了。最典型的就是留言板XSS。用户提交了一条包含XSS代码的留言到数据库。当目标用户查询留言时,那些留言的内容会从服务器解析以后加载出来。浏览器发现有XSS代码,就当作正常的HTML和JS解析执行。XSS攻击就发生了。

  经常使用来干吗?

  一、窃取用户信息,如cookie,token,帐号密码等。

  例如:张三发了一篇帖子,李四进行回复:但内容倒是一段js脚本,这篇帖子被他人浏览的时候就会中招,例子中的只是一个alert(),但脚本能够写的比较复杂一点盗用用户cookie等等操做。

  

  

  二、除了这种hacker还有个很惯用的伎俩,例如存储型XSS生成一些诱人的图片,文字(你懂的!),而后用户去点击的时候就能够执行某些坏事,窃取信息或者诱导到钓鱼网站。

  < img onclick="window.location.href='http://www.baidu.com'" width='300' src='img/webwxgetmsgimg.jpg'/>

  

  

  点击图片后,就会进入到目标网站了。

  

  三、劫持流量实现恶意跳转

  用户打开的网址,会默认跳转至指定网站,脚本以下:

 <script>window.location.href="http://www.baidu.com";</script>

四、防范手段

  一、入参字符过滤

  在源头控制,把输入的一些不合法的东西都过滤掉,从而保证安全性。如移除用户提交的的DOM属性如onerror,移除用户上传的Style节点,<iframe>, <script>,<a>节点等

  二、出参进行编码

  若是源头没控制好,就得后期补救了:像一些常见的符号,如<>在输出的时候要对其进行转换编码,这样作浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。例如:对<>作编码如:"<"用:"&lt;",">"用:"&gt;"来代替。

  三、入参长度限制

  经过以上的案例咱们不难发现xss攻击要能达成每每须要较长的字符串,所以对于一些能够预期的输入能够经过限制长度强制截断来进行防护。

  四、设置cookie httponly为true

  具体详情请参考:http://www.javashuo.com/article/p-chiufjdc-ey.html

五、参考网站

  http://www.javashuo.com/article/p-rzlgbmsc-ge.html

  https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065?fr=aladdin

  https://zhuanlan.zhihu.com/p/26177815

  https://www.imooc.com/learn/812

相关文章
相关标签/搜索