摘要:攻擊能獲取頁(yè)面數(shù)據(jù)劫持前端邏輯發(fā)送請(qǐng)求,偷取網(wǎng)站任意數(shù)據(jù)用戶資料欺騙用戶,所以是我們特別需要注意的前端安全問(wèn)題。攻擊可能來(lái)源可以通過(guò)動(dòng)態(tài)節(jié)點(diǎn)內(nèi)容屬性富文本來(lái)對(duì)頁(yè)面進(jìn)行攻擊。內(nèi)容安全策略,用于指定哪些內(nèi)容可以執(zhí)行。
XSS
XSS全稱是跨站腳本攻擊(Cross Site Scripting),所以我們可以縮寫成CSS,下面我們開始介紹CSS,先講選擇器。聽著是不是很奇怪,為了與層疊樣式表區(qū)分開來(lái),我們選擇XSS做為其縮寫。 XSS攻擊能獲取頁(yè)面數(shù)據(jù)、cookie、劫持前端邏輯、發(fā)送請(qǐng)求,偷取網(wǎng)站任意數(shù)據(jù)、用戶資料、欺騙用戶,所以是我們特別需要注意的前端安全問(wèn)題。 我在騰訊云上架了一個(gè)網(wǎng)站,專門用來(lái)承接各種攻擊,歡迎來(lái)玩。 XSS攻擊能獲取頁(yè)面數(shù)據(jù)、cookie、劫持前端邏輯、發(fā)送請(qǐng)求,偷取網(wǎng)站任意數(shù)據(jù)、用戶資料、欺騙用戶,所以是我們特別需要注意的前端安全問(wèn)題。
XSS攻擊分為反射型XSS攻擊,直接通過(guò)URL注入、存儲(chǔ)型XSS攻擊 存儲(chǔ)到DB后讀取時(shí)注入。XSS攻擊可能來(lái)源
可以通過(guò) 動(dòng)態(tài)HTML節(jié)點(diǎn)內(nèi)容、 HTML屬性、Javascript、 富文本來(lái)對(duì)頁(yè)面進(jìn)行攻擊。瀏覽器自帶防御措施
X-XSS-Protection, 0 http://123.207.46.233/?from= http://123.207.46.233/?from=111";alert(1);"
發(fā)出請(qǐng)求時(shí),XSS代碼出現(xiàn)在URL里,作為輸入提交到服務(wù)器端,服務(wù)器端解析后響應(yīng),XSS代碼隨瀏覽器一起傳回給瀏覽器,最后瀏覽器解析執(zhí)行XSS代碼。這個(gè)過(guò)程像一次反射,故叫反射性XSS。
localhost:3000/?xss=
瀏覽器防御功能很有線,只能訪問(wèn)反射型攻擊且不能防御來(lái)自富文本的攻擊。
HTML內(nèi)容和屬性轉(zhuǎn)譯
function html_encode(str) { if (!str) { return str; } return str.replace(/[<>&""]/g, (all) => { return { "<": "<", ">": ">", "&": "&", """: """ """: "'" }[all] }); }
但是用以上的方法并不能解決所有的問(wèn)題,如果將用于的輸入當(dāng)成一個(gè)js變量,我們
var escapeForJs = function(str) { if (!str) { return "" } str = str.replace(//g, ""); str = str.replace(/"/g, """); return str; }富文本防御
使用黑名單風(fēng)險(xiǎn)特別大,我們只能使用白名單來(lái)過(guò)濾。我們首先要知道這個(gè)標(biāo)簽是否合法,其次看標(biāo)簽上的
屬性是否合法。
var cheerio = require("cheerio"); var xssFilter = function (html) { if (!html) { return ""; } var $ = cheerio.load(html); var whiteList = { "img": ["src"], "font": ["color", "size"], "a": ["href"] } $("*").each(function (index, elem) { let name = elem.name; if(!whiteList[name]) { $(elem).remove(); return; } for (var attr in elem.attribs) { if (whiteList[name].indexOf("attr") === -1) { $(elem).attr(attr, null); } } }) }
下面給大家介紹一個(gè)神器xss模塊,var xss = require("xss"),滿足你對(duì)XSS的一切幻想。
CSPContent Security Policy內(nèi)容安全策略,用于指定哪些內(nèi)容可以執(zhí)行。
例如:
Content-Security-Policy: default-src "self" // 只允許同域的腳本執(zhí)行Cookie特性
cookie是用于前端數(shù)據(jù)存儲(chǔ),后端通過(guò)http頭設(shè)置,請(qǐng)求時(shí)通過(guò)http頭傳給后端,前端可以讀寫,遵守同源策略(協(xié)議、域名、端口全部一致)。
域名 有效期 路徑 http-only secure(https) 存儲(chǔ)個(gè)性化設(shè)置 存儲(chǔ)未登陸時(shí)用戶的唯一標(biāo)識(shí)符 存儲(chǔ)已登陸用戶的憑證 存儲(chǔ)其他業(yè)務(wù)數(shù)據(jù)
用戶ID + 簽名
sessionId
cookieID
?簽名防串改
私有變化
http-only
cross site request forgy,跨站請(qǐng)求偽造 用戶登陸A網(wǎng)站、A網(wǎng)站確認(rèn)身份、B網(wǎng)站向A網(wǎng)站發(fā)起請(qǐng)求(帶A網(wǎng)站身份)
利用用戶登陸態(tài)
用戶并不知情
完成業(yè)務(wù)請(qǐng)求
禁用第三方的cookie,same-site
通過(guò)referer
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/50901.html
摘要:攻擊能獲取頁(yè)面數(shù)據(jù)劫持前端邏輯發(fā)送請(qǐng)求,偷取網(wǎng)站任意數(shù)據(jù)用戶資料欺騙用戶,所以是我們特別需要注意的前端安全問(wèn)題。攻擊可能來(lái)源可以通過(guò)動(dòng)態(tài)節(jié)點(diǎn)內(nèi)容屬性富文本來(lái)對(duì)頁(yè)面進(jìn)行攻擊。內(nèi)容安全策略,用于指定哪些內(nèi)容可以執(zhí)行。 XSS XSS全稱是跨站腳本攻擊(Cross Site Scripting),所以我們可以縮寫成CSS,下面我們開始介紹CSS,先講選擇器。聽著是不是很奇怪,為了與層疊樣式表...
摘要:面試網(wǎng)絡(luò)了解及網(wǎng)絡(luò)基礎(chǔ)對(duì)端傳輸詳解與攻防實(shí)戰(zhàn)本文從屬于筆者的信息安全實(shí)戰(zhàn)中滲透測(cè)試實(shí)戰(zhàn)系列文章。建議先閱讀下的網(wǎng)絡(luò)安全基礎(chǔ)。然而,該攻擊方式并不為大家所熟知,很多網(wǎng)站都有的安全漏洞。 面試 -- 網(wǎng)絡(luò) HTTP 現(xiàn)在面試門檻越來(lái)越高,很多開發(fā)者對(duì)于網(wǎng)絡(luò)知識(shí)這塊了解的不是很多,遇到這些面試題會(huì)手足無(wú)措。本篇文章知識(shí)主要集中在 HTTP 這塊。文中知識(shí)來(lái)自 《圖解 HTTP》與維基百科,若...
摘要:如果初學(xué)者接觸的第一門語(yǔ)言是,學(xué)習(xí)曲線則會(huì)平滑得多,掌握一些基本語(yǔ)法和內(nèi)置的數(shù)據(jù)結(jié)構(gòu),已經(jīng)可以上手寫一些小工具或者小型應(yīng)用。如果你的學(xué)習(xí)時(shí)間充足,我的建議是一定要學(xué)數(shù)據(jù)結(jié)構(gòu)和算法。 前言 Python是最容易入門的編程語(yǔ)言,沒(méi)有之一。如果初學(xué)者接觸的第一門語(yǔ)言是C或者C++,對(duì)他們來(lái)說(shuō)最難的不是語(yǔ)法,而是容易出現(xiàn)內(nèi)存泄漏、指針等問(wèn)題。有時(shí)候排查這些問(wèn)題對(duì)初學(xué)者的打擊很大,尤其是沒(méi)掌握排...
摘要:前言本文主要介紹屬性事件和插槽這三個(gè)基礎(chǔ)概念使用方法及其容易被忽略的一些重要細(xì)節(jié)。至于如何改變,我們接下去詳細(xì)介紹單向數(shù)據(jù)流這個(gè)概念出現(xiàn)在組件通信。比如上例中在子組件中修改父組件傳遞過(guò)來(lái)的數(shù)組從而改變父組件的狀態(tài)。的一個(gè)核心思想是數(shù)據(jù)驅(qū)動(dòng)。 前言 本文主要介紹屬性、事件和插槽這三個(gè)vue基礎(chǔ)概念、使用方法及其容易被忽略的一些重要細(xì)節(jié)。如果你閱讀別人寫的組件,也可以從這三個(gè)部分展開,它們...
摘要:的語(yǔ)言的動(dòng)態(tài)性意味著我們可以使用以上種數(shù)據(jù)類型表示變換過(guò)渡動(dòng)畫實(shí)現(xiàn)案例前端掘金以下所有效果的實(shí)現(xiàn)方式均為個(gè)人見(jiàn)解,如有不對(duì)的地方還請(qǐng)一一指出。 讀 zepto 源碼之工具函數(shù) - 掘金Zepto 提供了豐富的工具函數(shù),下面來(lái)一一解讀。 源碼版本 本文閱讀的源碼為 zepto1.2.0 $.extend $.extend 方法可以用來(lái)擴(kuò)展目標(biāo)對(duì)象的屬性。目標(biāo)對(duì)象的同名屬性會(huì)被源對(duì)象的屬性...
閱讀 731·2023-04-25 19:28
閱讀 1391·2021-09-10 10:51
閱讀 2390·2019-08-30 15:55
閱讀 3408·2019-08-26 13:55
閱讀 2996·2019-08-26 13:24
閱讀 3325·2019-08-26 11:46
閱讀 2751·2019-08-23 17:10
閱讀 1415·2019-08-23 16:57