XSS注入方式和逃避XSS过滤的常用方法(整理)

 

  (转自黑吧安全网http://www.myhack58.com/)

  web前端开发常见的安全问题就是会遭遇XSS注入,而常见的XSS注入有以下2种方式:

 一、html标签注入

     这是最常见的一种,主要入口为表单项(一般就是正则过滤不周全)、内联样式表(exploer)

     正则过滤的解决办法,php一般会使用htmlspecialchars或者htmlentities函数进行转义

     注入方式有  <

    img src="javascript.:alert('xss');">  ">

   

  二、js代码注入

    一般为使用JS代码直接引用,不经校验的字符串,解析不安全的json(p)数据等

   比如一个name字段,没有经过过滤时,当name等于以下输入时

   ';alert('xss');//

   '';!--"=&{()}

   那使用document.write('u name is' + name);,就会破坏原有结构,插入不期望的数据

  三、应对XSS注入的方法主要有2种:

    1、对输入的数据进行转义保存,在输出时再进行还原

    2、对输入的数据进行过滤,确保输入数据符合我们的期望(数据类型、长度、过滤空格/特殊字符、判断唯一性等)

    对应的,逃避过滤的方法就有以下几种:

  A、许多过滤匹配特殊的标签,包括起始与结束尖括号。但是,许多浏览器接受结束括号前的空白符,允许攻击者轻易避开这种过滤。例如:

  B、因为许多人用小写字符编写HTML代码,所以一些过滤仅检查常用的小写恶意标签。例如:

  E、即使空字节后面的文本仍然在应用程序的响应中返回,但如果遇到空字节,一些过滤会停止处理字符串。在被过滤的表达式前插入一个URL编码的空字节即可避开这种过滤,还是上面C的表单
 
  擦擦擦%00"
  最终得到的HTML完全有效,其中的源代码块已成为JavaScript注释(包含在/*与*/之间),因此被浏览器忽略。这样注入的脚本被执行

转载于:https://www.cnblogs.com/xuehen/p/4814227.html

你可能感兴趣的:(javascript,php,前端)