如何防御XSS攻击

当页面中有用户输入行为并且没有对输入内容进行筛选时,用户完全可以在输入内容中加入一段脚本来获取cookies中信息等等。

如何让自己的web比较安全呢?

如何给自己的web做插值防御呢?

一 . html节点内容或属性的防御

小方法: 对 '<' 、'>'、双引号、单引号、'&' 进行转义等等

二 . 富文本的防御

· 方法:利用cheerio库 (node.js)

官网:https://www.npmjs.com/package/cheerio

npm install cheerio      //进行安装

使用方法: 白名单

var xssFilter=function(html){

             if(!html) return '';

             const cheerio = require('cheerio');

             const $= cheerio.load(html);

              var whiteList={          //白名单

                         'img' : ['src'],

                         'font' : ['color','size'],

                          'a' : ['href']

              };

              $('*').each(function(index,elem){

                        if (!whiteList[elem.name]) {

                                   $(elem).remove();                   //过滤掉白名单中没有的标签

                                   return;

                       }

                      for (var attr in elem.attribs) {              //判断属性是否在白名单中

                                  if(whiteList[elem.name].indexOf(attr) === -1){

                                              $(elem).attr(attr,null);  //cheerio中attr方法 ---设为null时就会移除这个属性

                                 }

                        }

           });

};

· 也可以通过第三方插件  比如 https://github.com/leizongmin/js-xss

使用方法: 

var xssFilter2=function(html){

           if(!html) return '';

           var xss = require('xss');

           var ret = xss(html,{

                  whiteList:{    // 白名单

                             img : ['src']

                   },

                  onIgnoreTag : function(){                        // 不在白名单内的标签的处理方法

                              return '';

                   }

          });

          return ret;

};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式。在...
    Gundy_阅读 3,544评论 0 5
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,385评论 2 17
  • XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Sty...
    听城阅读 3,899评论 0 0
  • 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式。在...
    Safesonic阅读 3,808评论 0 4
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,394评论 1 10