如何防御XSS攻擊

當(dāng)頁(yè)面中有用戶輸入行為并且沒(méi)有對(duì)輸入內(nèi)容進(jìn)行篩選時(shí),用戶完全可以在輸入內(nèi)容中加入一段腳本來(lái)獲取cookies中信息等等。

如何讓自己的web比較安全呢?

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

一 . html節(jié)點(diǎn)內(nèi)容或?qū)傩缘姆烙?/b>

小方法: 對(duì) '<' 、'>'、雙引號(hào)、單引號(hào)、'&' 進(jìn)行轉(zhuǎn)義等等

二 . 富文本的防御

· 方法:利用cheerio庫(kù) (node.js)

官網(wǎng):https://www.npmjs.com/package/cheerio

npm install cheerio ? ? ?//進(jìn)行安裝

使用方法: 白名單

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(); ? ? ? ? ? ? ? ? ? //過(guò)濾掉白名單中沒(méi)有的標(biāo)簽

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?return;

? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? for (var attr in elem.attribs) { ? ? ? ? ? ? ?//判斷屬性是否在白名單中

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $(elem).attr(attr,null);? //cheerio中attr方法 ---設(shè)為null時(shí)就會(huì)移除這個(gè)屬性

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ?});

};

· 也可以通過(guò)第三方插件 ?比如 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(){ ? ? ? ? ? ? ? ? ? ? ? ?// 不在白名單內(nèi)的標(biāo)簽的處理方法

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return '';

? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? });

? ? ? ? ? return ret;

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 在那個(gè)年代,大家一般用拼接字符串的方式來(lái)構(gòu)造動(dòng)態(tài) SQL 語(yǔ)句創(chuàng)建應(yīng)用,于是 SQL 注入成了很流行的攻擊方式。在...
    Gundy_閱讀 559評(píng)論 0 5
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 7,807評(píng)論 2 17
  • XSS攻擊:跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Sty...
    聽(tīng)城閱讀 698評(píng)論 0 0
  • 在那個(gè)年代,大家一般用拼接字符串的方式來(lái)構(gòu)造動(dòng)態(tài) SQL 語(yǔ)句創(chuàng)建應(yīng)用,于是 SQL 注入成了很流行的攻擊方式。在...
    Safesonic閱讀 637評(píng)論 0 4
  • 單例模式 適用場(chǎng)景:可能會(huì)在場(chǎng)景中使用到對(duì)象,但只有一個(gè)實(shí)例,加載時(shí)并不主動(dòng)創(chuàng)建,需要時(shí)才創(chuàng)建 最常見(jiàn)的單例模式,...
    Obeing閱讀 2,092評(píng)論 1 10