摘要:本文介紹了幾種可能被攻擊的使用方法。如果使用標(biāo)簽插入了內(nèi)聯(lián)會立即執(zhí)行。加的屬性返回的時(shí)編碼后的字符串,需要解碼才可能造成威脅??傮w來說,任何把字符串作為可執(zhí)行的代碼的操作,都是不安全的。
本文介紹了幾種可能被 XSS 攻擊的 jQuery 使用方法。
$我們經(jīng)常使用向 $ 內(nèi)傳入一個(gè)字符串的方式來選擇或生成 DOM 元素,但如果這個(gè)字符串是來自用戶輸入的話,那么這種方式就是有風(fēng)險(xiǎn)的。
先看一個(gè) DEMO:http://jsbin.com/duwuzonife/1/edit?html,js,output
javascript$("");
當(dāng)用戶輸入的字符串是像這樣的時(shí),雖然這個(gè) 元素不會馬上被插入到網(wǎng)頁的 DOM 中,但這個(gè) DOM 元素已經(jīng)被創(chuàng)建了,并且暫存在內(nèi)存里。而對于 元素,只要設(shè)置了它的 src 屬性,瀏覽器就會馬上請求 src 屬性所指向的資源。我們也可以利用這個(gè)特性做圖片的預(yù)加載。在上面的示例代碼中,創(chuàng)建元素的同時(shí),也設(shè)置了它的屬性,包括 src 屬性和 onerror 事件監(jiān)聽器,所以瀏覽器會馬上請求圖片資源,顯然請求不到,隨機(jī)觸發(fā) onerror 的回調(diào)函數(shù),也就執(zhí)行了 JavaScript 代碼。
推薦閱讀 $ 的官方文檔:http://api.jquery.com/jQuery/
類似的其他方法javascript.after() .append() .appendTo() .before() .html() .insertAfter() .insertBefore() .prepend() .prependTo() .replaceAll() .replaceWith() .unwrap() .wrap() .wrapAll() .wrapInner() .prepend()
以上這些方法不僅創(chuàng)建 DOM 元素,并且會馬上插入到頁面的 DOM 樹中。如果使用 標(biāo)簽插入了內(nèi)聯(lián) JS 會立即執(zhí)行。
不安全的輸入來源javascriptdocument.URL * document.location.pathname * document.location.href * document.location.search * document.location.hash document.referrer * window.name document.cookie
document 的大多數(shù)屬性都可以通過全局的 window 對象訪問到。加 * 的屬性返回的時(shí)編碼 (urlencode) 后的字符串,需要解碼才可能造成威脅。
不安全的操作把可以被用戶編輯的字符串,用在以下場景中,都是有隱患的??傮w來說,任何把字符串作為可執(zhí)行的代碼的操作,都是不安全的。
總結(jié)通過字符串創(chuàng)建函數(shù)
eval
new Function
setTimeout/setInterval
跳轉(zhuǎn)頁面
location.replace/location.assign
修改 標(biāo)簽的 src 屬性
修改事件監(jiān)聽器
如果發(fā)生在用 jQuery 時(shí)被 DOM-XSS 攻擊的情況,大多是因?yàn)楹鲆暳藘蓚€(gè)東西:
1. 在給$傳參數(shù)時(shí),對參數(shù)來源的把控。
2. 用戶的輸入途徑不只有表單,還有地址欄,還可以通過開發(fā)者工具直接修改 DOM ,或者直接在控制臺執(zhí)行 JS 代碼。
本文很多信息來自于以下幾篇文章,推薦進(jìn)一步閱讀。
http://ma.la/jquery_xss/
http://erlend.oftedal.no/blog/?blogid=127
http://sec.omar.li/2012/05/overview-of-dom-xss.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91449.html
摘要:是一種經(jīng)常出現(xiàn)在應(yīng)用程序中的計(jì)算機(jī)安全漏洞,是由于應(yīng)用程序?qū)τ脩舻妮斎脒^濾不足而產(chǎn)生的。常見的攻擊有三種反射型型存儲型。但是作為開發(fā)人員依然要了解基本知識于細(xì)節(jié)處避免制造漏洞。 showImg(https://segmentfault.com/img/bVbjJDk); 編者說:作為JS系工程師接觸最多的漏洞我想就是 XSS 漏洞了,然鵝并不是所有的同學(xué)對其都有一個(gè)清晰的認(rèn)識。今天我們...
摘要:跨域腳本攻擊攻擊是最常見的攻擊,其重點(diǎn)是跨域和客戶端執(zhí)行。后端接收請求時(shí),驗(yàn)證請求是否為攻擊請求,攻擊則屏蔽。開發(fā)安全措施首要是服務(wù)端要進(jìn)行過濾,因?yàn)榍岸说男r?yàn)可以被繞過。這種直接存在于頁面,無須經(jīng)過服務(wù)器返回就是基于本地的攻擊。 XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊,其重點(diǎn)是跨域和客戶端執(zhí)行。有人將XSS攻擊分為三種,分別是: Re...
摘要:跨站腳本攻擊跨站腳本攻擊為了不和層疊樣式表縮寫混淆,所以將跨站腳本攻擊縮寫為。而始終被蒙在鼓里。大大增強(qiáng)了網(wǎng)頁的安全性減少注意這里是減少而不是消滅跨站腳本攻擊。 XSS跨站腳本攻擊: XSS 跨站腳本攻擊(Cross Site Scripting),為了不和層疊樣式表(Cascading Style Sheets,CSS)縮寫混淆, 所以將跨站腳本攻擊縮寫為XSS。 XSS是攻擊者在w...
摘要:示例攻擊如何進(jìn)行下圖展示了攻擊者如何進(jìn)行攻擊攻擊者利用網(wǎng)站的表單插入惡意字符串到網(wǎng)站數(shù)據(jù)庫中。恰恰相反,至少有兩種常見的方式,會導(dǎo)致受害者發(fā)起針對自己的反射型攻擊。攻擊者精心構(gòu)造了一個(gè)包含惡意字符串的,將其發(fā)送給受害者。 原文地址:http://excess-xss.com/。如有翻譯不當(dāng)之處,歡迎指出 :D 分為四部分: 概述 XSS 攻擊 XSS 防御 總結(jié) 第一部分:概述 X...
摘要:網(wǎng)絡(luò)黑白一書所抄襲的文章列表這本書實(shí)在是垃圾,一是因?yàn)樗幕ヂ?lián)網(wǎng)上的文章拼湊而成的,二是因?yàn)槠礈愃教睿B表述都一模一樣,還抄得前言不搭后語,三是因?yàn)閮?nèi)容全都是大量的科普,不涉及技術(shù)也沒有干貨。 《網(wǎng)絡(luò)黑白》一書所抄襲的文章列表 這本書實(shí)在是垃圾,一是因?yàn)樗幕ヂ?lián)網(wǎng)上的文章拼湊而成的,二是因?yàn)槠礈愃教睿B表述都一模一樣,還抄得前言不搭后語,三是因?yàn)閮?nèi)容全都是大量的科普,不涉及技術(shù)...
閱讀 3471·2019-08-30 13:15
閱讀 1407·2019-08-29 18:34
閱讀 836·2019-08-29 15:18
閱讀 3494·2019-08-29 11:21
閱讀 3255·2019-08-29 10:55
閱讀 3711·2019-08-26 10:36
閱讀 1877·2019-08-23 18:37
閱讀 1834·2019-08-23 16:57