摘要:跨站腳本攻擊概念用戶填寫信息是可運(yùn)行的代碼。操作用戶界面攻擊源頭反射型從讀取內(nèi)容展示打開存儲(chǔ)型從后臺(tái)讀取內(nèi)容展示這是一個(gè)從后臺(tái)讀取的數(shù)據(jù)防范手段純文本。由于內(nèi)容可能在多端展示,所以不在提交的時(shí)候轉(zhuǎn)義,只在展示的時(shí)候轉(zhuǎn)義。
xss-跨站腳本攻擊
概念:用戶填寫信息是可運(yùn)行的 js 代碼。 操作用戶界面
攻擊源頭:
反射型 – 從url讀取內(nèi)容展示
存儲(chǔ)型 - 從后臺(tái)讀取內(nèi)容展示
防范手段:
純文本– html encode , js encode。由于內(nèi)容可能在多端展示,所以不在提交的時(shí)候轉(zhuǎn)義,只在展示的時(shí)候轉(zhuǎn)義。
防范:html-encode
//4.svr.js const http = require("http"); const fs = require("fs"); var spCharCodes = "[u0000-u001F]|u00F1|u000B|u000C|u00A0|uFEFF|u1680|u180E|[u2000-u200F]|u2028|u2029|u202F|u205F|u3000"; var norCharStr = ""|"|>|<"; var JavaScriptEncode = (function(str){ var norChar = " | ||"+norCharStr; var reg = new RegExp(norChar+"|"+spCharCodes, "g"); var escapeMap = {}; norChar.split("|").forEach(function(str){ if (str == "<") // 防 xss escapeMap[str] = "u003c"; else if (str.length == 1) escapeMap[str] = ""+str; else if (str.length == 2 && str[0] == "") escapeMap[eval("""+str+""")] = str; }); function rp(str) { return escapeMap[str] || "u"+zeroize(str.charCodeAt(0).toString(16), 4, 0); } return function(str) { if (str === null || str === undefined || typeof str == "function") return ""; return (""+str).replace(reg, rp); }; }()) const proxy = http.createServer((req, res) => { res.writeHead(200, { "Content-Type": "text/html" }); res.end(fs.readFileSync("./4.xss.html").toString().replace("{{replaceJs}}}" , "bbb"" + ";alert("xss")+"" )); // res.end(fs.readFileSync("./4.xss.html").toString().replace("{{replaceJs}}}" , JavaScriptEncode("bbb"" + ";alert("xss")+"" ))); }).listen(3000);
富文本– 白名單過(guò)濾
npm xss
URL 編碼
將不可信數(shù)據(jù)作為 URL 參數(shù)值時(shí)需要對(duì)參數(shù)進(jìn)行 URL 編碼
encodeURIComponent(str)
JavaScript 編碼
function encodeForJavascript(str, kwargs) { let encoded = ""; for(let i = 0; i < str.length; i++) { let cc = hex = str[i]; if (!/[A-Za-z0-9]/.test(str[i]) && str.charCodeAt(i) < 256) { hex = "x" + cc.charCodeAt().toString(16); } encoded += hex; } return encoded; };csrf-跨站偽造請(qǐng)求
概念:利用你所在網(wǎng)站的登錄的狀態(tài),悄悄提交各種信息(post ,get 請(qǐng)求)
//1.svr.js const http = require("http"); const fs = require("fs"); const proxy = http.createServer((req, res) => { if(req.method == "POST"){ req.on("data" , (data)=>{ console.log("referer :" , req.headers.referer); console.log("data :" , data.toString() , " cookies:" , req.headers.cookie); }); req.on("end" , (data)=>{ res.writeHead(200, { "Content-Type": "text/html" }); res.end(""); }) } else { res.setHeader("Set-Cookie", ["login=1"]); res.end(""); } }).listen(3001);
防范手段:
提交 method=Post 判斷referer
Token(特殊登陸態(tài))
SSRF-服務(wù)器偽造請(qǐng)求概念:利用某些業(yè)務(wù)服務(wù)端會(huì)發(fā)出請(qǐng)求,請(qǐng)求內(nèi)網(wǎng)地址
防范手段:
域名限制 - 不予提交內(nèi)網(wǎng)域名
內(nèi)網(wǎng)IP 限制 - 不予提交內(nèi)網(wǎng)IP
-內(nèi)網(wǎng)請(qǐng)求地址做token(特殊登陸態(tài))- 信任請(qǐng)求
概念:頁(yè)面劫持;iframe 嵌套某的頁(yè)面,騙取用戶輸入信息
防范手段:
頁(yè)面劫持:Window.parent 判斷
Json 劫持: 返回{} ,而不是返回?cái)?shù)據(jù)
X-FRAME-OPTIONS: [DENY|SAMEORIGIN|ALLOW-FROM]
其他 Jsonp & cors 安全校驗(yàn)防范手段:
Token (特殊登錄態(tài))
referer 校驗(yàn)
防范手段:
黑名單
參考資料:
https://github.com/caihuiji/w...
http://blog.gojaven.com/post/...
前端安全系列(一):如何防止XSS攻擊?
前端安全系列之二:如何防止CSRF攻擊?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/117207.html
摘要:跨站腳本攻擊概念用戶填寫信息是可運(yùn)行的代碼。操作用戶界面攻擊源頭反射型從讀取內(nèi)容展示打開存儲(chǔ)型從后臺(tái)讀取內(nèi)容展示這是一個(gè)從后臺(tái)讀取的數(shù)據(jù)防范手段純文本。由于內(nèi)容可能在多端展示,所以不在提交的時(shí)候轉(zhuǎn)義,只在展示的時(shí)候轉(zhuǎn)義。 xss-跨站腳本攻擊 概念:用戶填寫信息是可運(yùn)行的 js 代碼。 操作用戶界面 攻擊源頭: 反射型 – 從url讀取內(nèi)容展示 //打開 1.xss.html# ...
摘要:跨站腳本攻擊概念用戶填寫信息是可運(yùn)行的代碼。操作用戶界面攻擊源頭反射型從讀取內(nèi)容展示打開存儲(chǔ)型從后臺(tái)讀取內(nèi)容展示這是一個(gè)從后臺(tái)讀取的數(shù)據(jù)防范手段純文本。由于內(nèi)容可能在多端展示,所以不在提交的時(shí)候轉(zhuǎn)義,只在展示的時(shí)候轉(zhuǎn)義。 xss-跨站腳本攻擊 概念:用戶填寫信息是可運(yùn)行的 js 代碼。 操作用戶界面 攻擊源頭: 反射型 – 從url讀取內(nèi)容展示 //打開 1.xss.html# ...
摘要:最新的云引擎都升級(jí)到,很多都有變化,之前的全棧項(xiàng)目卻是沒人維護(hù)了。最近學(xué)習(xí)感覺真的好用,所以配合最新的云引擎寫一個(gè),作為以后快速開發(fā)的模板工具。前后端完全分離,服務(wù)端設(shè)置了跨域,前端項(xiàng)目提出去也是的。 如果對(duì)您有幫助的話,歡迎 star~ 我的github 地址 另外現(xiàn)在用命令行部署 leancloud 有點(diǎn)問(wèn)題,async/await 會(huì)報(bào)錯(cuò),但是使用 git 部署不會(huì),所以還是使用...
摘要:是一套給網(wǎng)站開發(fā)者使用的應(yīng)用程序開發(fā)框架和工具包。是要展現(xiàn)給用戶的信息。是模型視圖以及其他任何處理請(qǐng)求所必須的資源之間的中介,并生成網(wǎng)頁(yè)。 CodeIgniter 是一套給 PHP 網(wǎng)站開發(fā)者使用的應(yīng)用程序開發(fā)框架和工具包。 目錄結(jié)構(gòu)說(shuō)明 license.txt 許可協(xié)議(可刪除) user_guide 用戶手冊(cè)(可刪除) system 框架核心文件 app...
閱讀 2617·2021-11-16 11:40
閱讀 3413·2021-11-08 13:26
閱讀 880·2021-10-28 09:32
閱讀 3538·2021-09-13 10:26
閱讀 812·2019-08-30 15:55
閱讀 785·2019-08-30 15:44
閱讀 1913·2019-08-30 15:44
閱讀 1759·2019-08-30 13:48