溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用JS檢測(cè)Web系統(tǒng)是否安全

發(fā)布時(shí)間:2020-09-21 09:50:50 來(lái)源:億速云 閱讀:207 作者:小新 欄目:web開發(fā)

這篇文章主要介紹使用JS檢測(cè)Web系統(tǒng)是否安全,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!


你的Web系統(tǒng)真的安全嗎?

千里之堤,潰于蟻穴。

在Web系統(tǒng)中,一個(gè)小小的漏洞,往往能引發(fā)極其嚴(yán)重的后果。因此,Web安全是每個(gè)系統(tǒng)在設(shè)計(jì)、開發(fā)、運(yùn)維時(shí)必須要重點(diǎn)考慮的問(wèn)題。

現(xiàn)如今很多Web系統(tǒng)所采取的防御措施是偏向于基礎(chǔ)和簡(jiǎn)單的,往往只針對(duì)常見的安全漏洞做了防御,比如:

  • Csrf
  • XSS
  • Sql注入

等等。這些基礎(chǔ)的防御措施是必須要做的,且實(shí)施的成本不高,但它們只是系統(tǒng)安全防御中的基礎(chǔ)部分。很多開發(fā)人員在意識(shí)中認(rèn)為做好這些就足夠應(yīng)付大部分情況了,這種想法是非常危險(xiǎn)的。實(shí)際上,除了這些基礎(chǔ)且標(biāo)準(zhǔn)化的漏洞,每個(gè)業(yè)務(wù)系統(tǒng)本身的業(yè)務(wù)邏輯也很有可能成為黑客攻擊的目標(biāo),一旦被抓到并攻破,那后果將是非常嚴(yán)重的。下面將列舉一些常見的業(yè)務(wù)邏輯漏洞,這些漏洞也是之前開發(fā)系統(tǒng)時(shí)踩過(guò)的坑,希望能對(duì)大家有所啟發(fā)。

會(huì)話憑證管理混亂

我們都知道HTTP本身是無(wú)狀態(tài)的,為了能讓瀏覽器和服務(wù)器互相知道身份并信任對(duì)方,大部分web系統(tǒng)都是利用“token”這種約定的憑證來(lái)實(shí)現(xiàn)的,token會(huì)在用戶登錄之后產(chǎn)生,并在用戶主動(dòng)退出或者超過(guò)一段時(shí)間后失效。也就是說(shuō),請(qǐng)求帶上了相應(yīng)的token,那么服務(wù)端就能拿到token做相應(yīng)的校驗(yàn),校驗(yàn)通過(guò)則信任該請(qǐng)求并執(zhí)行相關(guān)業(yè)務(wù)邏輯,如果沒(méi)帶、帶一個(gè)非法的或者過(guò)期的則認(rèn)為不合法。這看上去并沒(méi)有什么問(wèn),但實(shí)際的實(shí)現(xiàn)上可能暗藏漏洞。

來(lái)看兩個(gè)例子:

1.前端開發(fā)人員小明在寫用戶點(diǎn)擊退出按鈕的邏輯時(shí),只是單純的清空了cookie或者localstorage中的token值(token一般存這兩個(gè)地方),并沒(méi)有向后臺(tái)發(fā)起請(qǐng)求讓token在業(yè)務(wù)中過(guò)期失效。那這個(gè)token的有效性本質(zhì)上違背了用戶的意圖,此時(shí)就存在非常大的風(fēng)險(xiǎn)。當(dāng)用戶自發(fā)退出后,token仍然有效,假如該token被他人通過(guò)某種方式獲取并記錄下來(lái),那他可以完美的回放用戶執(zhí)行過(guò)的操作,比如更改用戶信息,下單等。

2.在上面的例子中,我們有提到token是要設(shè)置過(guò)期的,合理的過(guò)期時(shí)間能有效降低風(fēng)險(xiǎn)。但后臺(tái)開發(fā)小哥也許在設(shè)置token過(guò)期的配置中,眼花加手抖,多打一位數(shù),或者把單位理解錯(cuò),在S級(jí)單位上用了MS級(jí)的數(shù)值,那過(guò)期時(shí)間就會(huì)被設(shè)定的很長(zhǎng)。對(duì)于登錄之后就不喜歡主動(dòng)退出或者長(zhǎng)期掛著頁(yè)面的用戶就非常的危險(xiǎn)。token在用戶長(zhǎng)期不使用的情況下依然有效,如果被他人拿到token,也能干很多的壞事。

校驗(yàn)失效

文件上傳應(yīng)該是Web應(yīng)用上比較常用的功能,比如上傳頭像,上傳文件到網(wǎng)盤等等。惡意用戶可能會(huì)在上傳的時(shí)候,上傳木馬、病毒、惡意腳本等文件,這類文件在服務(wù)器上被執(zhí)行會(huì)帶來(lái)比較嚴(yán)重的后果。這種攻擊方式成本較低,比較容易被攻擊者利用。允許上傳的文件類型越多,受攻擊的可能性就越大。當(dāng)惡意程序被成功上傳后,可能被用戶下載,在用戶電腦上執(zhí)行后使之中毒。也可能在服務(wù)器上就執(zhí)行惡意程序,造成服務(wù)器被控制,進(jìn)而服務(wù)器癱瘓,數(shù)據(jù)丟失。

正常情況下,程序都會(huì)對(duì)文件類型進(jìn)行判斷,只允許我們認(rèn)為合法的文件上傳到服務(wù)器。但是,這個(gè)判斷在一些web程序中,只在前端做了,在后端沒(méi)做。這就給攻擊者帶來(lái)了機(jī)會(huì),攻擊者可以輕松的串改請(qǐng)求,從而實(shí)現(xiàn)非法文件的上傳。

正確的做法應(yīng)該是后端進(jìn)行文件擴(kuò)展名判斷、MIME檢測(cè)以及限制上傳文件大小等限制來(lái)防御。另外,可以將文件保存在一個(gè)與業(yè)務(wù)隔離的服務(wù)器來(lái)防止惡意文件攻擊業(yè)務(wù)服務(wù)器導(dǎo)致服務(wù)不可用。

數(shù)據(jù)枚舉

在登錄系統(tǒng),大部分系統(tǒng)會(huì)在用戶登錄的時(shí)候判斷用戶是否存在,然后給出提示“該手機(jī)號(hào)未注冊(cè)”。如果這個(gè)邏輯是用一個(gè)單獨(dú)的接口做的,那么就會(huì)存在被暴力枚舉的風(fēng)險(xiǎn)。攻擊者可以通過(guò)該接口利用手機(jī)號(hào)碼庫(kù)進(jìn)行請(qǐng)求枚舉,識(shí)別出哪些手機(jī)號(hào)是在系統(tǒng)中注冊(cè)過(guò)的,給下一步暴力破解密碼帶來(lái)機(jī)會(huì)。

對(duì)于這個(gè)問(wèn)題,建議是將該判斷放到登錄驗(yàn)證的接口中,并不返回明確的提示。你會(huì)看到做的好的網(wǎng)站上,一般會(huì)提示“該手機(jī)號(hào)未注冊(cè)或密碼錯(cuò)誤”。雖然這在用戶體驗(yàn)上打了折扣,但也更加的安全。

數(shù)據(jù)寫入重放

以一個(gè)論壇的發(fā)帖舉例,利用抓包工具抓取論壇發(fā)帖的請(qǐng)求過(guò)程,并通過(guò)該工具重放過(guò)程,會(huì)發(fā)現(xiàn)帖子列表出現(xiàn)了兩條一樣的帖子,這就是被重放攻擊了。如果加快重放頻率,不僅會(huì)在系統(tǒng)中產(chǎn)生很多的垃圾數(shù)據(jù),還會(huì)因?yàn)轭l繁寫入給業(yè)務(wù)數(shù)據(jù)庫(kù)帶來(lái)巨大壓力。

對(duì)于此類有重放風(fēng)險(xiǎn)的請(qǐng)求,建議加上請(qǐng)求頻率限制。比如,可以判斷兩個(gè)請(qǐng)求的時(shí)間戳,設(shè)定大于某個(gè)時(shí)間值才有效。

權(quán)限漏洞

權(quán)限校驗(yàn)是Web系統(tǒng)的基本功能,比如一個(gè)公司組織架構(gòu)管理系統(tǒng),里面提供了修改部門名稱、部門經(jīng)理的功能。加上權(quán)限校驗(yàn)?zāi)芎芎玫乇苊馊我庥脩裟芡ㄟ^(guò)這些功能修改他本無(wú)權(quán)限的信息。此類系統(tǒng)中一定會(huì)實(shí)現(xiàn)權(quán)限校驗(yàn),但實(shí)際上真的實(shí)現(xiàn)對(duì)了嗎?

假設(shè)我們規(guī)定,系統(tǒng)中某用戶需要同時(shí)滿足具有超管權(quán)限且屬于A部門兩個(gè)條件,才能修改部門名稱。往往在實(shí)際的代碼實(shí)現(xiàn)中,開發(fā)人員只是去判斷該用戶是否為超管,而沒(méi)有判斷該用戶是否屬于該部門。在這種情況下,我們可以用B部門的超管賬號(hào),去修改A部門的名稱,相當(dāng)于越權(quán)修改了,這顯然不是我們期望的結(jié)果。即使B部門的超管用戶在界面上無(wú)法找到修改A部門部門名稱的入口,也可以通過(guò)抓取請(qǐng)求修改參數(shù)來(lái)實(shí)現(xiàn)。

除了越權(quán)修改,當(dāng)然還能越權(quán)查看。我們肯定也不期望A部門的超管能看到B部門的部門信息,是不是?

建議大家的系統(tǒng)要對(duì)用戶訪問(wèn)角色的權(quán)限進(jìn)行嚴(yán)格的檢查及限制。

安全無(wú)小事,正如開頭所講,任何一個(gè)漏洞都有可能帶來(lái)毀滅性的打擊,希望大家能重視。不僅在業(yè)務(wù)設(shè)計(jì)上要重視,同時(shí)也要在代碼審查上要重視,以避免因?qū)崿F(xiàn)而帶來(lái)的低級(jí)漏洞問(wèn)題。

以上是使用JS檢測(cè)Web系統(tǒng)是否安全的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI