一文讀懂 Web 安全【轉(zhuǎn)】

一文讀懂 Web 安全 【轉(zhuǎn)】

原文:https://mp.weixin.qq.com/s/4nva3aPShUlwd9CRsarCxA

我太喜歡這個(gè)作者的文章了祸挪,真的讓我對(duì)安全領(lǐng)域充滿了好奇,愛(ài)了愛(ài)了谱醇,推薦各位去閱讀原文O局佟!副渴!


Web 安全是互聯(lián)網(wǎng)中不可或缺的一個(gè)領(lǐng)域熔吗,這個(gè)領(lǐng)域中誕生了大量的黑帽子與白帽子,他們都是安全領(lǐng)域的王者佳晶,在平時(shí)里桅狠,他們都利用各種巧妙的技術(shù)互相博弈,時(shí)不時(shí)就會(huì)掀起一場(chǎng) Web 安全浪潮,真可謂神仙打架中跌,各顯神通咨堤。

本文從一個(gè)吃瓜群眾的角度,聊一聊 Web 安全的一些有趣故事漩符。

  • 安全世界觀
  • 安全攻防案例
  • 總結(jié)與思考

安全世界觀

在互聯(lián)網(wǎng)發(fā)展之初一喘,IE 瀏覽器壟斷的時(shí)期,大家上網(wǎng)的目的都很單純嗜暴,主要通過(guò)瀏覽器分享信息凸克,獲取新聞。但隨著互聯(lián)網(wǎng)的不斷發(fā)展發(fā)展闷沥,一個(gè)網(wǎng)頁(yè)能做的事情越來(lái)越多萎战,除了看新聞,我們還可以看視頻舆逃,玩游戲蚂维,購(gòu)物,聊天等路狮。這些功能都大大豐富了我們的生活虫啥。

隨著網(wǎng)頁(yè)功能的逐漸增多,就開(kāi)始出現(xiàn)了一些黑帽子奄妨,他們視圖通過(guò)一些技術(shù)手段來(lái)牟取利益涂籽。在我小的時(shí)候,印象最深的就是木馬病毒砸抛,它可以監(jiān)控你的鍵盤评雌,將你在鍵盤上敲打的內(nèi)容發(fā)送到黑客的機(jī)器上,黑客通過(guò)分析這些內(nèi)容锰悼,很容易就能得到你的游戲賬號(hào)和密碼柳骄。

在這之后,就誕生了一些殺毒軟件箕般,致力于解決網(wǎng)絡(luò)上的各種病毒耐薯,隨著不斷地發(fā)展,殺毒軟件已經(jīng)成為一臺(tái)電腦必不可少的軟件丝里。

為什么會(huì)出現(xiàn)在這樣的安全問(wèn)題?

安全歸根到底是信任的問(wèn)題曲初,如果所有人都按照正常的流程去上網(wǎng),不去謀取私利杯聚,也就沒(méi)有安全問(wèn)題可談了臼婆。

安全的根本在于新人,但要讓所有人互相信任談何容易幌绍。在當(dāng)前階段颁褂,我們可以做到:持續(xù)做好安全防護(hù)故响,讓漏洞越來(lái)越少,非法攻擊越來(lái)越困難颁独,這樣就能逐漸減少黑帽子的數(shù)量彩届,讓病毒制造者越來(lái)越少

如何做好安全

要做好安全,首先得理解安全問(wèn)題的屬性誓酒,前人通過(guò)無(wú)數(shù)實(shí)踐樟蠕,最后將安全的屬性總結(jié)為安全三要素,分別為 機(jī)密性靠柑,完整性寨辩,可用性

  • 機(jī)密性

保護(hù)數(shù)據(jù)內(nèi)容不被泄露
通常使用加密的方式

  • 完整性

保護(hù)數(shù)據(jù)內(nèi)容是完整的,沒(méi)有被篡改
通常使用數(shù)字簽名的方法歼冰。

  • 可用性

數(shù)據(jù)隨時(shí)都能夠使用
通常是在防御 DOS

有了安全3要素之后靡狞,我們就可以對(duì)安全問(wèn)題進(jìn)行評(píng)估了。

  • 資產(chǎn)等級(jí)劃分

找出最重要的數(shù)據(jù)停巷。
找出最重要數(shù)據(jù)的宿主空間耍攘,如: 在數(shù)據(jù)庫(kù)里榕栏,那么數(shù)據(jù)庫(kù)就得重點(diǎn)防御
找出數(shù)據(jù)庫(kù)的宿主空間畔勤, 如: 在一臺(tái)服務(wù)器上,那么這臺(tái)服務(wù)器就得做次等防御
找出服務(wù)器的宿主空間扒磁,如: 在OSI網(wǎng)絡(luò)層級(jí)上庆揪,那么在網(wǎng)絡(luò)層面就得做一般防御

  • 威脅分析

找出威脅(可能造成危害的來(lái)源)
找出風(fēng)險(xiǎn)(可能出現(xiàn)的損失叫做風(fēng)險(xiǎn))

  • 風(fēng)險(xiǎn)分析

采取多標(biāo)準(zhǔn)決策分析妨托,即:風(fēng)險(xiǎn) = 威脅等級(jí) * 威脅可行性
計(jì)算所有的威脅缸榛,將最終的風(fēng)險(xiǎn)進(jìn)行排序,優(yōu)先解決風(fēng)險(xiǎn)大的問(wèn)題

  • 確認(rèn)解決方案

找出不安全的實(shí)現(xiàn)方式兰伤,并確定解決方案
解決方案不要改變商業(yè)需求的初衷
解決方案需要對(duì)用戶透明内颗,不要改變用戶的習(xí)慣

做好安全評(píng)估之后,我們就有了一份安全解決方案敦腔,后續(xù)的安全工作只需要按照這個(gè)方案去做均澳,就沒(méi)有任何問(wèn)題。

安全的原則

有了安全解決方案后符衔,我們還可以制定一些安全原則找前,遵守原則做事,可以讓我們事半功倍判族。

  • 黑名單躺盛,白名單原則

白名單方案指的是給安全的資源授權(quán)
黑名單方案指的是禁用不安全的資源
我們應(yīng)該優(yōu)先使用白名單方案,因?yàn)楹诿麊瓮ǔ=y(tǒng)計(jì)不完所有的不安全資源
如: XSS攻擊的方式非常多形帮,可以通過(guò) script槽惫,css周叮,image 標(biāo)簽等。盡管你將這些標(biāo)簽都加入黑名單界斜,也不能保證其他標(biāo)簽都沒(méi)有 XSS 的攻擊隱患

  • 最小權(quán)限原則

只授權(quán)必要的權(quán)限则吟,不要過(guò)度授權(quán),減少出錯(cuò)機(jī)會(huì)
如: 普通權(quán)限的 Linux 用戶只能操作 ~ 文件下的目錄锄蹂,如果有人想刪數(shù)據(jù)庫(kù)跑路氓仲,在執(zhí)行 rm -rf / 時(shí),就會(huì)提示無(wú)權(quán)限

  • 縱深防御原則

這條原則類似 木桶理論得糜,安全水平往往取決于最短的那塊板
即: 不要留下短板敬扛,黑帽子們往往可以利用短板作為突破口,挖掘更大的漏洞

  • 數(shù)據(jù)與代碼分離原則

當(dāng)用戶的數(shù)據(jù)被當(dāng)成代碼執(zhí)行時(shí)朝抖,混肴了數(shù)據(jù)和代碼的邊界啥箭,從而導(dǎo)致安全問(wèn)題
如: XSS 就是利用這一點(diǎn)去攻擊的。

  • 不可預(yù)測(cè)性原則

這條原則就是為了提高攻擊門檻治宣,有效防止基于篡改急侥,偽造的攻擊
如: 數(shù)據(jù)庫(kù)中使用 uuid 代替 number 型的自增主鍵,可以避免id 被攻擊者猜到侮邀,從而進(jìn)行批量操作
token 也是利用不可預(yù)測(cè)性坏怪,攻擊者無(wú)法構(gòu)造 token 也就無(wú)法進(jìn)行攻擊

有了這些安全原則,我們就可以開(kāi)干了绊茧,接下來(lái)介紹幾個(gè)常見(jiàn)的攻擊案例铝宵。

安全攻防案例

安全攻防的案例非常多,這里主要介紹幾個(gè)出鏡率比較高的安全問(wèn)題华畏。

客戶端攻擊
  • XSS 攻擊
  • CSRF 攻擊
  • 點(diǎn)擊劫持
XSS 攻擊

XSS 攻擊的本質(zhì)是將用戶數(shù)據(jù)當(dāng)成了 HTML 代碼一部分來(lái)執(zhí)行鹏秋,從而混肴原本的語(yǔ)義,產(chǎn)生新的語(yǔ)義亡笑。

image

如圖所示侣夷,我們注冊(cè)了一個(gè) <script>alert(document.cookie)</script> 的用戶名,所有能看到此用戶名字的頁(yè)面仑乌,都會(huì)彈出當(dāng)前瀏覽器的 Cookie百拓,如果代碼的邏輯是將 Cookie 發(fā)送到攻擊者的網(wǎng)站,攻擊者就能冒充當(dāng)前用戶進(jìn)行登陸了绝骚。

XSS 攻擊方式有很多耐版,所有和用戶交互的地方,都有可能存在 XSS 攻擊压汪。

例如:

  • 所有 input 框
  • window.location
  • window.name
  • document.referrer
  • document.cookie
  • localStorage
  • ..

由于頁(yè)面中與用戶交互的地方非常多粪牲,肯定還有一些XSS的攻擊方式?jīng)]有被發(fā)現(xiàn),而一旦被黑帽子發(fā)現(xiàn)止剖,就可能造成嚴(yán)重的影響腺阳,所以我們務(wù)必引起重視落君。

xss攻擊影響

被xss攻擊成功后,攻擊者就可以獲取大量的用戶信息亭引,例如:

  • 識(shí)別用戶 UA

  • 識(shí)別用戶瀏覽器擴(kuò)展

  • 識(shí)別用戶瀏覽過(guò)的網(wǎng)站

通過(guò) CSS的 Visited 屬性

  • 獲取用戶真實(shí)的IP

通過(guò) WebRTC 等

  • 盜取 Cookie

偽造用戶登錄绎速,竊取用戶資料

  • XSS釣魚

向頁(yè)面注入一個(gè)登陸彈窗,讓用戶認(rèn)為是網(wǎng)站內(nèi)的登陸彈窗(其實(shí)是釣魚網(wǎng)站的)焙蚓,一旦用戶登陸纹冤,賬號(hào)密碼就泄露給了釣魚網(wǎng)站

XSS 攻擊防御

目前來(lái)說(shuō),XSS已經(jīng)得到了互聯(lián)網(wǎng)行業(yè)的重視购公,許多開(kāi)發(fā)框架都內(nèi)置了安全的 HTML 渲染方法萌京。

我們也可以自定義進(jìn)行一些安全配置

  • 配置 HTTP 中的 http-only 頭,讓前端js不能操作 Cookie
  • 輸入檢查宏浩,在用戶提交數(shù)據(jù)時(shí)知残,使用 XSSFilter 過(guò)濾掉不安全的數(shù)據(jù)
  • 輸出檢查,在頁(yè)面渲染的時(shí)候比庄,過(guò)濾掉危險(xiǎn)的數(shù)據(jù)
CSRF 攻擊

CSRF 跨站請(qǐng)求偽造求妹,是一種利用用戶身份,執(zhí)行一些用戶非本意的操作

image

如圖所示:

  1. 用戶先登錄了服務(wù)器B佳窑,然后去訪問(wèn)服務(wù)器C
  2. 服務(wù)器C通過(guò)惡意腳本制恍,冒充A去調(diào)用服務(wù)器B上的某個(gè)功能
  3. 對(duì)于服務(wù)器B來(lái)說(shuō),還以為這是A發(fā)起的請(qǐng)求华嘹,就當(dāng)作正常請(qǐng)求處理了

試想一下吧趣,如果C冒充A進(jìn)行了一次轉(zhuǎn)賬法竞,必定會(huì)造成大量的經(jīng)濟(jì)損失耙厚。

CSRF 防御方式

防御CSRF 主要有以下幾種方式:

  • 驗(yàn)證碼

每一次請(qǐng)求都要求用戶驗(yàn)證,以確保請(qǐng)求真實(shí)可靠岔霸。
即:利用惡意腳本不能識(shí)別復(fù)雜的驗(yàn)證碼的特點(diǎn)薛躬,保證每次請(qǐng)求都是合法的

  • Referer 檢查

檢查發(fā)起請(qǐng)求的服務(wù)器,是否為目標(biāo)服務(wù)器
即:HTTP 請(qǐng)求中的 Referer 頭傳遞了當(dāng)前請(qǐng)求的域名呆细,如果此域名是非法服務(wù)器的域名型宝,則需要禁止訪問(wèn)

  • Token

利用不可預(yù)測(cè)性原則,每一請(qǐng)求必須帶上一段隨機(jī)碼絮爷,這段隨機(jī)碼由正常用戶保存趴酣,黑帽子不知道隨機(jī)碼,也就無(wú)法冒充用戶進(jìn)行請(qǐng)求了坑夯。

點(diǎn)擊劫持

點(diǎn)擊劫持是一種視覺(jué)欺騙的攻擊手段岖寞。攻擊者將需要攻擊的網(wǎng)站通過(guò) iframe 嵌套的方式嵌入自己的網(wǎng)頁(yè)中,并將 iframe 設(shè)置為透明柜蜈,在頁(yè)面中透出一個(gè)按鈕誘導(dǎo)用戶點(diǎn)擊仗谆。

就像一張圖片上面鋪了一層透明的紙一樣指巡,你看到的是攻擊者的頁(yè)面,但是其實(shí)這個(gè)頁(yè)面只是在底部隶垮,而你真正點(diǎn)擊的是被攻擊者透明化的另一個(gè)網(wǎng)頁(yè)藻雪。

image

如圖所示,當(dāng)你點(diǎn)擊了頁(yè)面上的按鈕之后狸吞,本以為會(huì).. 勉耀,而真正執(zhí)行的操作是關(guān)注了某人的博客。

點(diǎn)擊劫持防御

由于點(diǎn)擊劫持主要通過(guò) iframe蹋偏,所以在防御時(shí)瑰排,主要基于 iframe 去做

  • 方案一: frame busting
    if(self !== top) {
        // 跳回原頁(yè)面
        top.location = self.location
    }

正常網(wǎng)站使用 js腳本判斷是否被惡意網(wǎng)站嵌入,如:博客網(wǎng)站監(jiān)測(cè)到被一個(gè) iframe 打開(kāi)暖侨,自動(dòng)跳轉(zhuǎn)到正常的頁(yè)面即可

  • 方案二:使用 HTTP 中的 x-frame-options 頭椭住,控制 iframe 的加載,它有3個(gè)值可選:

DENY,表示頁(yè)面不允許通過(guò) iframe 的方式展示
SAMEORIGIN, 表示頁(yè)面可以在相同域名下通過(guò) iframe 的方式展示
ALLOW-FROM, 表示頁(yè)面可以在指定來(lái)源的 iframe 中展示字逗。

  • 配置 iframe 的 sandbox 屬性

sandbox = "allow-same-origin" 則只能加載與主站同域的資源京郑。

服務(wù)器端攻擊

服務(wù)器端的攻擊方式也非常多,這里列舉幾個(gè)常見(jiàn)的

  • SQL 注入攻擊
  • 文件上傳漏洞
  • 登錄認(rèn)證攻擊
  • 應(yīng)用層拒絕服務(wù)器攻擊 (葫掉?
  • webServer 配置安全 (些举?
SQL注入攻擊

SQL 注入和 XSS 一樣,都是違背了數(shù)據(jù)和代碼分離原則導(dǎo)致的攻擊方式

如圖所示俭厚,我們利用 SQL 注入户魏,就能在不需要密碼的情況下,直接登陸管理員的賬號(hào)挪挤。

image

攻擊的前提是叼丑,后端只用了簡(jiǎn)單的拼接 SQL 的方式去查詢數(shù)據(jù)。

    /* 拼接出來(lái)的 sql 如下 */
    select * from user where username = 'admin' or 1 = 1 and password = 'xxx'
    /* 無(wú)論密碼輸入什么扛门,這條sql 預(yù)計(jì)都能查詢到管理員的信息 */

除此以外鸠信,SQL 注入還有以下幾種方式:

  • 使用 SQL 探測(cè),猜數(shù)據(jù)庫(kù)表名论寨,列名:

通過(guò) MySQL 內(nèi)置的 benchmark 探測(cè)數(shù)據(jù)庫(kù)字段
如:一段偽造代碼 MySQL select database as current if current[0] === 'a', benchmark(10000, '猜對(duì)了')

  • 使用存儲(chǔ)過(guò)程執(zhí)行系統(tǒng)命令

通過(guò)內(nèi)置的方法或存儲(chǔ)過(guò)程執(zhí)行 shell 腳本
如: xp_cmdshell, sys_eval, sys_exec

  • 字符串截取

如: MySQL 在處理超長(zhǎng)的字符串時(shí)星立,會(huì)顯示警告,但會(huì)執(zhí)行成功
注冊(cè)一個(gè) admin + 50 個(gè)空格的用戶葬凳,會(huì)觸發(fā)截?cái)啻麓梗罱K新增一個(gè)admin 用戶,這樣就能擁有管理員權(quán)限了火焰。

SQL 注入防御

防止 SQL 注入的最好的辦法就是劲装,不要手動(dòng)拼接 SQL 語(yǔ)句

  • 最佳方案,使用預(yù)編譯語(yǔ)句綁定變量

通常是指框架提供的拼接 SQL 變量的方法
這樣的語(yǔ)義不會(huì)發(fā)生改變荐健,變量始終被當(dāng)成變量

  • 嚴(yán)格限制數(shù)據(jù)類型酱畅,如果注入了其他類型的數(shù)據(jù)琳袄,直接報(bào)錯(cuò),不允許執(zhí)行
  • 使用安全的存儲(chǔ)過(guò)程和系統(tǒng)函數(shù)
CRLF 注入

在注入攻擊中纺酸,換行符注入也是非常常見(jiàn)的一種攻擊方式

如果在 HTTP 請(qǐng)求頭中注入了2 個(gè)換行符窖逗,會(huì)導(dǎo)致?lián)Q行符后面的所有內(nèi)容都被解析成請(qǐng)求實(shí)體部分
攻擊中通常在 Set-Cookie 時(shí),注入換行符餐蔬,控制請(qǐng)求傳遞的內(nèi)容碎紊。

文件上傳漏洞

上傳文件時(shí)網(wǎng)頁(yè)開(kāi)發(fā)中的一個(gè)常見(jiàn)功能,如果不加處理樊诺,很容易就會(huì)造成攻擊仗考。

image

如圖所示,攻擊者上傳了一個(gè)木馬文件词爬,并且通過(guò)返回的URL進(jìn)行訪問(wèn)秃嗜,就能控制服務(wù)器。

通常我們會(huì)控制上傳文件的后綴名顿膨,但也不能完全解決問(wèn)題锅锨,攻擊者還可以通過(guò)以下方式進(jìn)行攻擊:

  • 偽造正常文件

將木馬文件偽造成正常的后綴名進(jìn)行上傳
如果要避免這個(gè)問(wèn)題,我們可以繼續(xù)判斷上傳文件的文件頭前10個(gè)字節(jié)

  • Apache 解析方式是從后往前解析恋沃,直到找到一個(gè)認(rèn)識(shí)的后綴名為止

如:上傳一個(gè) abc.php.rar.rar.rar.rar 能繞過(guò)后綴名檢查必搞,但在執(zhí)行時(shí),被當(dāng)成一個(gè)php文件進(jìn)行執(zhí)行囊咏。

  • IIS 會(huì)截?cái)喾痔?hào)進(jìn)行解析

如: abc.asp;xx.png 能繞過(guò)后綴名檢查恕洲,但在執(zhí)行時(shí),被當(dāng)成一個(gè) asp 文件進(jìn)行執(zhí)行梅割。

  • HTTP PUT 方法允許將文件上傳到指定位置

通過(guò) HTTP MOVE 方法霜第,還能修改上傳的文件名
通過(guò)二者配合,就能先上傳一個(gè)正常的后綴名炮捧,然后改為一個(gè)惡意的后綴名庶诡。

  • PHP CGI 路徑問(wèn)題

執(zhí)行 http://abc.com/test.png/xxx.php 時(shí),會(huì)把 test.png 當(dāng)作 php 文件去解析咆课。
如果用戶正好是一段惡意的php腳本當(dāng)作一張圖片進(jìn)行上傳,就會(huì)觸發(fā)這個(gè)攻擊扯俱。

文件上傳漏洞防御

防御文件上傳漏洞书蚪,可以從以下幾點(diǎn)考慮:

  • 將文件上傳的目錄設(shè)置為不可執(zhí)行

  • 判斷文件類型

檢查 MIME Type,配置白名單
檢查后綴名迅栅,配置白名單殊校。

  • 使用隨機(jī)數(shù)改寫文件名和文件路徑

上傳文件后,隨機(jī)修改文件名读存,讓攻擊者無(wú)法執(zhí)行攻擊

  • 單獨(dú)設(shè)置文件服務(wù)器的域名

單獨(dú)做一個(gè)文件服務(wù)器为流,并使用單獨(dú)的域名呕屎,利用同源策略,規(guī)避客戶端攻擊
通常做法是將靜態(tài)資源資源放在 CDN 上

登錄認(rèn)證攻擊

登錄認(rèn)證攻擊可以理解為一種破解登錄的方法敬察。攻擊者通常采用以下幾種方式進(jìn)行破解:

  • 彩虹表

攻擊者通過(guò)收集大量明文和 MD5 的對(duì)應(yīng)關(guān)系秀睛,用于破解 MD5 密文找出原文
對(duì)于彩虹表中的 MD5 密碼,我們可以加鹽莲祸,進(jìn)行二次加密蹂安,避免被破解

  • Session Fixation 攻擊

利用應(yīng)用系統(tǒng)在服務(wù)器的 SessionID 固定不變機(jī)制,借助他人用相同的 SessionID 獲取認(rèn)證和授權(quán)
攻擊者登錄失敗后锐帜,后端返回了 SessionID田盈,攻擊者將 SessionID 交給正常用戶去登錄,登錄成功后缴阎,攻擊者就能使用這個(gè) SessionID 冒充正常用戶登錄了允瞧。
如果瀏覽器每一次登錄都刷新 SessionID 可以避免這個(gè)問(wèn)題。

  • Session 保持攻擊

有些時(shí)候蛮拔,后端處于用戶體驗(yàn)考慮瓷式,只要這個(gè)用戶還活著,就不會(huì)讓這個(gè)用戶的Session失效
攻擊者可以通過(guò)不停發(fā)起請(qǐng)求语泽,可以讓這個(gè) session 一直活下去贸典。

登錄認(rèn)證防御方式
  • 多因素認(rèn)證

密碼作為第一道防御,但在密碼驗(yàn)證成功后踱卵,我們還可以繼續(xù)驗(yàn)證: 動(dòng)態(tài)口令廊驼,數(shù)字證書,短信驗(yàn)證碼等惋砂,以保證用戶安全
由于短信和網(wǎng)頁(yè)完全是2套獨(dú)立的系統(tǒng)妒挎,攻擊者很難獲取到短信驗(yàn)證碼,也就無(wú)法進(jìn)行攻擊西饵。

除此之外酝掩,前端登錄認(rèn)證還有多種方式,如果你感興趣眷柔,可以去閱讀《前端登錄期虾,這一篇就夠了》。

應(yīng)用層拒絕服務(wù)攻擊

應(yīng)用層拒絕服務(wù)攻擊驯嘱,又叫 DDOS 攻擊镶苞,它指的是利用大量的請(qǐng)求造成資源過(guò)載,導(dǎo)致服務(wù)器不可用

image

通常有以下幾種 DDOS 攻擊方式:

  • SYN Flood 洪水攻擊

利用 HTTP 3次握手機(jī)制鞠评,消耗服務(wù)器連接資源
如:攻擊者發(fā)起大量的 HTTP 請(qǐng)求茂蚓,但并不完成3次握手,而是之握手2次,這時(shí)服務(wù)器端會(huì)繼續(xù)等待直到超時(shí)聋涨。這時(shí)的服務(wù)器會(huì)一直忙于處理大量的垃圾請(qǐng)求晾浴,而無(wú)暇顧及正常請(qǐng)求。

  • Slowloris攻擊

以非常低的速度發(fā)送 HTTP請(qǐng)求頭牍白,消耗服務(wù)器連接資源
如:攻擊者發(fā)送大量 HTTP 請(qǐng)求脊凰,但每個(gè)請(qǐng)求頭都發(fā)的很慢,每隔 10s 發(fā)送一個(gè)字符淹朋,服務(wù)器為了等待數(shù)據(jù)笙各,不得始終保持連接,這樣一來(lái)础芍,服務(wù)器連接數(shù)很快就被占光了杈抢。

  • HTTP POST DOS

發(fā)送 HTTP 時(shí),指定一個(gè)非常大的 Content-Length 然后以很長(zhǎng)的時(shí)間間隔發(fā)送仑性,消耗服務(wù)器連接資源惶楼。

  • CC攻擊

針對(duì)一些非常消耗資源的頁(yè)面,不斷發(fā)起請(qǐng)求诊杆。
如: 頁(yè)面中的某些頁(yè)面歼捐,需要后端做大量的運(yùn)算,或者需要做非常耗時(shí)的數(shù)據(jù)庫(kù)查詢晨汹。在大量的請(qǐng)求下豹储,服務(wù)器的 CPU 內(nèi)存等資源可能就被占光了。

  • Server Limit DOS

通過(guò) XSS 注入一段超長(zhǎng)的 Cookie淘这,導(dǎo)致超出 Web 服務(wù)器所能承受的 Request Header 長(zhǎng)度剥扣,服務(wù)器就會(huì)拒絕此服務(wù)。

  • ReDOS

針對(duì)一些缺陷的正則表達(dá)式铝穷,發(fā)起大量請(qǐng)求钠怯,耗光系統(tǒng)資源

應(yīng)用層拒絕服務(wù)攻擊防御

對(duì)于應(yīng)用層拒絕服務(wù)攻擊,目前也沒(méi)有特別完美的解決方案曙聂,不過(guò)我們還是可以進(jìn)行一些優(yōu)化

  • 應(yīng)用代碼做好性能優(yōu)化

合理使用 Redis晦炊,Memcache 等緩存方案,減少 CPU 資源使用率

  • 網(wǎng)絡(luò)架構(gòu)上做好優(yōu)化

后端搭建負(fù)載均衡
靜態(tài)資源使用 CDN 進(jìn)行管理

  • 限制請(qǐng)求頻率

服務(wù)器計(jì)算所有 IP 地址的請(qǐng)求頻率宁脊,篩選出異常的IP 進(jìn)行禁用断国。
可以使用 LRU 算法,緩存前 1000 條請(qǐng)求的 IP朦佩,如果有IP請(qǐng)求頻率過(guò)高并思,就進(jìn)行禁用

其實(shí),處理 DDOS 核心思路就是禁用不可信任的用戶语稠,確保資源都是被正常的用戶所使用。

WebServer 配置安全

我們?cè)诓渴?Web 應(yīng)用的時(shí)候,經(jīng)常會(huì)用到 Nginx仙畦,Apache输涕,IIS,Tomcat慨畸,Jboss等 Web 服務(wù)器莱坎,這些服務(wù)器本身也存在一些安全隱患,如果配置不當(dāng)寸士,很容易受到攻擊

在配置 Web 服務(wù)器時(shí)檐什,可以參考以下幾點(diǎn):

  • 以用戶權(quán)限運(yùn)行 Web 服務(wù)器

遵守最小權(quán)限原則,以最小權(quán)限身份運(yùn)行 Web 服務(wù)器弱卡,限制被入侵后的權(quán)限乃正。

  • 刪除可視化后臺(tái)

運(yùn)行Tomcat,Jboss等 Web 服務(wù)器時(shí)婶博,默認(rèn)會(huì)開(kāi)啟一個(gè)可視化的運(yùn)營(yíng)后臺(tái)瓮具,運(yùn)行在8080端口,并且第一次訪問(wèn)是沒(méi)有認(rèn)證的凡人。
攻擊者可以利用可視化后臺(tái)名党,遠(yuǎn)程加載一段 war包 或者上傳木馬文件,進(jìn)行控制挠轴。

  • 及時(shí)更新版本

主流的Web服務(wù)器传睹,每隔一段時(shí)間就會(huì)修復(fù)一些漏洞,所以記得及時(shí)更新版本

總結(jié)

本文介紹了 Web 安全的基本概念岸晦,以及大量的攻防技巧欧啤,其實(shí)這只是 Web 安全中的冰山一角,如果你對(duì)此感興趣委煤,不妨在安全領(lǐng)域繼續(xù)深耕學(xué)習(xí)堂油,一定能看到更廣闊一片天。

對(duì)于一個(gè)開(kāi)發(fā)者來(lái)說(shuō)碧绞,我們應(yīng)該在寫代碼時(shí)就將安全考慮其中府框,形成自己的一套安全開(kāi)發(fā)體系,做到心中有安全讥邻,時(shí)時(shí)考慮安全迫靖,就能無(wú)形之中化解不法分子的攻擊。


以上

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兴使,一起剝皮案震驚了整個(gè)濱河市系宜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌发魄,老刑警劉巖盹牧,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俩垃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡汰寓,警方通過(guò)查閱死者的電腦和手機(jī)口柳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)有滑,“玉大人跃闹,你說(shuō)我怎么就攤上這事∶茫” “怎么了望艺?”我有些...
    開(kāi)封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肌访。 經(jīng)常有香客問(wèn)我找默,道長(zhǎng),這世上最難降的妖魔是什么场靴? 我笑而不...
    開(kāi)封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任啡莉,我火速辦了婚禮,結(jié)果婚禮上旨剥,老公的妹妹穿的比我還像新娘咧欣。我一直安慰自己,他們只是感情好轨帜,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布魄咕。 她就那樣靜靜地躺著,像睡著了一般蚌父。 火紅的嫁衣襯著肌膚如雪哮兰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天苟弛,我揣著相機(jī)與錄音喝滞,去河邊找鬼。 笑死膏秫,一個(gè)胖子當(dāng)著我的面吹牛右遭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缤削,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窘哈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了亭敢?” 一聲冷哼從身側(cè)響起滚婉,我...
    開(kāi)封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帅刀,沒(méi)想到半個(gè)月后让腹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體远剩,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年哨鸭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了民宿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娇妓。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡像鸡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哈恰,到底是詐尸還是另有隱情只估,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布着绷,位于F島的核電站蛔钙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏荠医。R本人自食惡果不足惜吁脱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彬向。 院中可真熱鬧兼贡,春花似錦、人聲如沸娃胆。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)里烦。三九已至凿蒜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胁黑,已是汗流浹背废封。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丧蘸,地道東北人漂洋。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像触趴,于是被迫代替她去往敵國(guó)和親氮发。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361