摘要:不過這種方案存在一個(gè)問題,就是無法發(fā)送圖片。尤其是對等標(biāo)簽需要格外的注意。后端必須對前端傳過來的數(shù)據(jù)進(jìn)行再次驗(yàn)證。
這一篇文章主要是對 安全性 的思考,首先了解一下一些常見的網(wǎng)絡(luò)攻擊
xss跨站點(diǎn)腳本攻擊XSS是注入攻擊的一種,其特點(diǎn)是不對服務(wù)器造成任何傷害,而是通過一些正常的站內(nèi)交互途徑,發(fā)布含有js的攻擊代碼,如果服務(wù)器沒有沒有過濾或者轉(zhuǎn)義這些腳本,作為內(nèi)容發(fā)布到了頁面上,其他用戶訪問這個(gè)頁面時(shí)會(huì)運(yùn)行這些腳本
儲(chǔ)存型XSS也叫作 持久性XSS,會(huì)把攻擊者的數(shù)據(jù)儲(chǔ)存在服務(wù)器端,攻擊行為將伴隨攻擊數(shù)據(jù)一直存在。
舉個(gè)栗子
攻擊者以一個(gè)普通用戶登錄進(jìn)來,然后在輸入框提交以下數(shù)據(jù)
更多
攻擊者提交了這條帶標(biāo)簽的數(shù)據(jù),該條數(shù)據(jù)保存在數(shù)據(jù)庫中,而當(dāng)用戶user登錄后點(diǎn)擊 更多時(shí),在 "abc.com" 所在的服務(wù)器上,攻擊者就可以竊取到user的sessionID。有了該sessionID,攻擊者在會(huì)話有效期內(nèi)可以獲得user權(quán)限
反射型XSS即被動(dòng)的非持久性XSS,通過篡改頁面,誘騙用戶點(diǎn)擊帶攻擊代碼的鏈接。XSS代碼出現(xiàn)在URL中,作為輸入提交到服務(wù)器中,服務(wù)器解析后響應(yīng),XSS代碼隨著響應(yīng)內(nèi)容一起傳回瀏覽器,由瀏覽器解析執(zhí)行XSS代碼,從而攻擊用戶。
DOM-XSS 在本次項(xiàng)目中的漏洞(部分)完成demo后,我并沒有對用戶的輸入進(jìn)行過濾然后嘗試了一下標(biāo)簽的腳本注入發(fā)現(xiàn):
結(jié)果:輕而易舉得到了用戶名。顯然,如果不做過濾想要得到用戶的密碼也是十分簡單的
解決方案一. 將 innerHTML替換成 textContent
innerHTML和 textContent區(qū)別:
innerHTML 返回 HTML 文本。通常,為了在元素中檢索或?qū)懭胛谋荆藗兪褂胕nnerHTML。但是,textContent通常具有更好的性能,因?yàn)槲谋静粫?huì)被解析為HTML。此外,使用textContent可以防止 XSS 攻擊。
showImg("https://segmentfault.com/img/bVSsUD?w=570&h=425"); 不過這種方案存在一個(gè)問題,就是無法發(fā)送圖片。我暫時(shí)也沒有一個(gè)好一點(diǎn)的思路,還請大家指教一下~二. input輸入框登錄名驗(yàn)證
var username = document.getElementById("username").value; var legal = true, pattern = new RegExp("[<>`/?!%"]|~") if (username.trim() != "") { if (pattern.test(username)) { alert("昵稱不能包含特殊字符:[<>`/?!%"]|~~") return false } else that.socket.emit("login", username) //不為空,發(fā)起一個(gè)login事件并將輸入的昵稱發(fā)送到服務(wù)器 } else { alert("昵稱不能為空") document.getElementById("username").focus() //否則輸入框獲得焦點(diǎn) }總結(jié)總而言之,我們不能信任用戶的任何輸入,只要是需要用戶輸入的地方都需要做數(shù)據(jù)的驗(yàn)證和過濾。尤其是對,等標(biāo)簽需要格外的注意。
當(dāng)然,僅僅前端做過濾是沒有用的,用戶可以繞過前端的驗(yàn)證,將數(shù)據(jù)傳送到后端。后端必須對前端傳過來的數(shù)據(jù)進(jìn)行再次驗(yàn)證。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84749.html
摘要:但是需要注意的一點(diǎn)是協(xié)議是建立在協(xié)議基礎(chǔ)之上的,需要經(jīng)過一次握手。所以連接的發(fā)起方仍是客戶端。是一個(gè)簡潔而靈活的應(yīng)用框架提供一系列強(qiáng)大特性幫助你創(chuàng)建各種應(yīng)用。這也是為什么要采用協(xié)議來實(shí)現(xiàn)聊天室的原因。 從開始寫到完善差不多斷斷續(xù)續(xù)差不多半個(gè)月時(shí)間,雖然還沒有打到想要的效果但還是階段性總結(jié)一下。(下一步加入打算視頻通訊功能)本文默認(rèn)你已掌握 node 相關(guān)基礎(chǔ)知識(shí) GitHub地址:ht...
摘要:優(yōu)化聊天室的一些新的技巧調(diào)色盤調(diào)用效果圖如下打開新頁面圖片預(yù)覽 優(yōu)化聊天室的一些新Get的技巧 調(diào)色盤調(diào)用 效果圖如下:showImg(https://segmentfault.com/img/bVSksq?w=558&h=454); 打開新Tab頁面圖片預(yù)覽 _DisplayImage:(user,imgData,color)=>{ var userMsg=document...
摘要:優(yōu)化聊天室的一些新的技巧調(diào)色盤調(diào)用效果圖如下打開新頁面圖片預(yù)覽 優(yōu)化聊天室的一些新Get的技巧 調(diào)色盤調(diào)用 效果圖如下:showImg(https://segmentfault.com/img/bVSksq?w=558&h=454); 打開新Tab頁面圖片預(yù)覽 _DisplayImage:(user,imgData,color)=>{ var userMsg=document...
摘要:前端邏輯搞定之后,思考一下這個(gè)聊天室的交互是怎么實(shí)現(xiàn)的。在前端監(jiān)聽一個(gè)事件,這個(gè)事件的觸發(fā)條件是成功和服務(wù)端建立連接。攜帶一個(gè)參數(shù),即用戶的輸入。別人發(fā)送的消息現(xiàn)在就需要在前端建立一個(gè)響應(yīng)服務(wù)端有新消息的監(jiān)聽事件了。 一些廢話:) 最近在學(xué)校比較閑,終于有這么一塊時(shí)間可以自由支配了,所以內(nèi)心還是十分的酸爽舒暢的。當(dāng)然了,罪惡的事情也是有的,比如已經(jīng)連續(xù)一周沒有吃早飯了,其實(shí)現(xiàn)在回頭想想...
摘要:前端邏輯搞定之后,思考一下這個(gè)聊天室的交互是怎么實(shí)現(xiàn)的。在前端監(jiān)聽一個(gè)事件,這個(gè)事件的觸發(fā)條件是成功和服務(wù)端建立連接。攜帶一個(gè)參數(shù),即用戶的輸入。別人發(fā)送的消息現(xiàn)在就需要在前端建立一個(gè)響應(yīng)服務(wù)端有新消息的監(jiān)聽事件了。 一些廢話:) 最近在學(xué)校比較閑,終于有這么一塊時(shí)間可以自由支配了,所以內(nèi)心還是十分的酸爽舒暢的。當(dāng)然了,罪惡的事情也是有的,比如已經(jīng)連續(xù)一周沒有吃早飯了,其實(shí)現(xiàn)在回頭想想...
閱讀 1234·2021-11-25 09:43
閱讀 1346·2021-09-26 09:55
閱讀 2404·2021-09-10 11:20
閱讀 3372·2019-08-30 15:55
閱讀 1450·2019-08-29 13:58
閱讀 1176·2019-08-29 12:36
閱讀 2351·2019-08-29 11:18
閱讀 3415·2019-08-26 11:47