前端防xss攻击相关知识

删除回忆录丶 提交于 2019-12-17 02:02:05

1.什么是XSS攻击?

    XSS就是跨站脚本攻击,会想尽一切方法 将一段脚本内容放到目标网站的目标浏览器上解释执行。

    它分为两类:(1)非持久型 ,它是一次性的,仅对当前页面产生影响

                          (2)持久型,攻击数据将存储在服务端,攻击行为将随着攻击数据一直存在。

2.简单模拟攻击过程

   (1)通过评论表单提交将 <script>alert('123')</script>之类的代码提交到网站

    (2)网站后端对提交的评论数据不做任何操作,直接存储到数据库中

    (3)其他用户访问正常访问网站,并且需要请求网站的评论数据

    (4)网站后端会从数据库中取出数据,直接返回给用户

    (5)用户得到页面后,直接运行攻击者提交的代码,所有用户都会在网页中弹出123的弹窗

      这种攻击方式恶意代码会被存储在数据库中,其他用户在正常访问的情况下,也有会被攻击,影响的范围比较大

3.简单预防方法

      可以使用js工具类将输入的内容进行过滤:

var HtmlUtil = {
	      /*1.用正则表达式实现html转码*/
	      htmlEncodeByRegExp:function (str){  
	           var s = "";
	           if(str.length == 0) return "";
	           s = str.replace(/&/g,"&amp;");
	           s = s.replace(/</g,"&lt;");
	           s = s.replace(/>/g,"&gt;");
	           s = s.replace(/ /g,"&nbsp;");
	          s = s.replace(/\'/g,"&#39;");
	          s = s.replace(/\"/g,"&quot;");
	          return s;  
	    },
	    /*2.用正则表达式实现html解码*/
	    htmlDecodeByRegExp:function (str){  
	          var s = "";
	          if(str.length == 0) return "";
	          s = str.replace(/&amp;/g,"&");
	          s = s.replace(/&lt;/g,"<");
	          s = s.replace(/&gt;/g,">");
	          s = s.replace(/&nbsp;/g," ");
	          s = s.replace(/&#39;/g,"\'");
	          s = s.replace(/&quot;/g,"\"");
	          return s;  
	    }
	 };


 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!