乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Web安全看這篇就夠了

       西北望msm66g9f 2020-08-03
      // 每日前端夜話(huà) 第369篇
      // 正文共:1500 字
      // 預(yù)計(jì)閱讀時(shí)間:7 分鐘

      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)了一些黑帽子,他們?cè)噲D通過(guò)一些技術(shù)手段來(lái)牟取利益。在我小的時(shí)候,印象最深的就是木馬病毒,它可以監(jiān)控你的鍵盤(pán),將你在鍵盤(pá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ì)用戶(hù)透明,不要改變用戶(hù)的習(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)限,不要過(guò)度授權(quán),減少出錯(cuò)機(jī)會(huì)。
        • 如:普通權(quán)限的 Linux 用戶(hù)只能操作 ~ 文件夾下的目錄,如果有人想刪庫(kù)跑路,在執(zhí)行 rm -rf / 時(shí),就會(huì)提示無(wú)權(quán)限。
      • 縱深防御原則

        • 這條原則類(lèi)似 木桶理論,安全水平往往取決于最短的那塊板。
        • 即:不要留下短板,黑帽子們往往可以利用短板為突破口,挖掘更大的漏洞。
      • 數(shù)據(jù)與代碼分離原則

        • 當(dāng)用戶(hù)數(shù)據(jù)被當(dāng)成代碼執(zhí)行時(shí),混淆了數(shù)據(jù)和代碼的邊界,從而導(dǎo)致安全問(wèn)題。
        • 如:XSS 就是利用這一點(diǎn)去攻擊的。
      • 不可預(yù)測(cè)性原則

        • 這條原則是為了提高攻擊門(mén)檻,有效防止基于篡改、偽造的攻擊。
        • 如:數(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)題。

      客戶(hù)端攻擊

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

      XSS 攻擊

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

      img

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

      XSS 攻擊方式有很多,所有和用戶(hù)交互的地方,都有可能存在 XSS 攻擊。

      例如:

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

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

      XSS 攻擊影響

      被 XSS 攻擊成功后,攻擊者就可以獲取大量的用戶(hù)信息,例如:

      • 識(shí)別用戶(hù) UA。

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

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

        • 通過(guò) CSS 的 Visited 屬性。
      • 獲取用戶(hù)真實(shí)的 IP。

        • 通過(guò) WebRTC 等。
      • 盜取 Cookie

        • 偽造用戶(hù)登錄,竊取用戶(hù)資料。
      • XSS 釣魚(yú)。


        • 向頁(yè)面注入一個(gè)登錄彈窗,讓用戶(hù)認(rèn)為是網(wǎng)站內(nèi)的登錄彈窗(其實(shí)是釣魚(yú)網(wǎng)站的),一旦用戶(hù)登錄,賬號(hào)密碼就泄露給了釣魚(yú)網(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。
      • 輸入檢查,在用戶(hù)提交數(shù)據(jù)時(shí),使用 XssFilter 過(guò)濾掉不安全的數(shù)據(jù)。
      • 輸出檢查,在頁(yè)面渲染的時(shí)候,過(guò)濾掉危險(xiǎn)的數(shù)據(jù)。

      CSRF 攻擊

      CSRF(Cross-site request forgery)跨站請(qǐng)求偽造,是一種利用用戶(hù)身份,執(zhí)行一些用戶(hù)非本意的操作。

      img

      如圖所示:

      1. 用戶(hù)先登錄了服務(wù)器 B,然后去訪(fǎng)問(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)求都要求用戶(hù)驗(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ù)器的域名,則需要禁止訪(fǎng)問(wèn)。
      • Token

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

      點(diǎn)擊劫持

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

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

      img

      如果所示,當(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)。

      img

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

      # 拼接出來(lái)的 sql 如下:
      select * from user where username = 'admin' or 1=1 and password = 'xxx'
      # 無(wú)論密碼輸入什么,這條 sql 語(yǔ)句都能查詢(xún)到管理員的信息

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

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

        • 通過(guò) MySQL 內(nèi)置的 benchmark 探測(cè)數(shù)據(jù)庫(kù)字段。
        • 如:一段偽代碼 select database as current if current[0]==='a',benchmark(10000,'猜對(duì)了') 如果表明猜對(duì)了,就延遲 10 s 并返回成功。
      • 使用存儲(chǔ)過(guò)程執(zhí)行系統(tǒng)命令

        • 通過(guò)內(nèi)置的方法或存儲(chǔ)過(guò)程執(zhí)行 shell 腳本。
        • 如:xp_cmdshell、sys_eval、sys_exec 等。
      • 字符串截?cái)?/p>

        • 如:MySQL 在處理超長(zhǎng)的字符串時(shí),會(huì)顯示警告,但會(huì)執(zhí)行成功。
        • 注冊(cè)一個(gè) admin + 50 個(gè)空格的用戶(hù),會(huì)觸發(fā)截?cái)?,最終新增一個(gè) admin 用戶(hù),這樣就能擁有管理員權(quán)限了。
      SQL 注入防御

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

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

        • 通常是指框架提供的拼接 SQL 變量的方法。
        • 這樣的語(yǔ)義不會(huì)發(fā)生改變,變量始終被當(dāng)成變量。
      • 嚴(yán)格限制數(shù)據(jù)類(lèi)型,如果注入了其他類(lèi)型的數(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)容。

      文件上傳漏洞

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

      img

      如圖所示,攻擊者上傳了一個(gè)木馬文件,并且通過(guò)返回的 URL 進(jìn)行訪(fǎng)問(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 能繞過(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:///test.png/xxx.php 時(shí),會(huì)把 test.png 當(dāng)做 php 文件去解析。
        • 如果用戶(hù)正好是把一段惡意的 php 腳本當(dāng)做一張圖片進(jìn)行上傳,就會(huì)觸發(fā)這個(gè)攻擊。
      文件上傳漏洞防御

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

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

      • 判斷文件類(lèi)型

        • 檢查 MIME Type,配置白名單。
        • 檢查后綴名,配置白名單。
      • 使用隨機(jī)數(shù)改寫(xiě)文件名和文件路徑

        • 上傳文件后,隨機(jī)修改文件名,讓攻擊者無(wú)法執(zhí)行攻擊。
      • 單獨(dú)設(shè)置文件服務(wù)器的域名

        • 單獨(dú)做一個(gè)文件服務(wù)器,并使用單獨(dú)的域名,利用同源策略,規(guī)避客戶(hù)端攻擊。
        • 通常做法是將靜態(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 交給正常用戶(hù)去登錄,登錄成功后,攻擊者就能使用這個(gè) SessionID 冒充正常用戶(hù)登錄了。
        • 如果瀏覽器每一次登錄都刷新 SessionID 可以避免這個(gè)問(wèn)題。
      • Session 保持攻擊

        • 有些時(shí)候,后端出于用戶(hù)體驗(yàn)考慮,只要這個(gè)用戶(hù)還活著,就不會(huì)讓這個(gè)用戶(hù)的 Session 失效。
        • 攻擊者可以通過(guò)不停發(fā)起請(qǐng)求,可以讓這個(gè) Session 一直活下去。
      登錄認(rèn)證防御方式
      • 多因素認(rèn)證
        • 密碼作為第一道防御,但在密碼驗(yàn)證成功后,我們還可以繼續(xù)驗(yàn)證:動(dòng)態(tài)口令,數(shù)字證書(shū),短信驗(yàn)證碼等,以保證用戶(hù)安全。
        • 由于短信和網(wǎng)頁(yè)完全是 2 套獨(dú)立的系統(tǒng),攻擊者很難獲取到短信驗(yàn)證碼,也就無(wú)法進(jìn)行攻擊。

      除此之外,前端登錄認(rèn)證還有多種方式,如果你對(duì)此感興趣,可以參考我之前寫(xiě)的《前端登錄,這一篇就夠了》。

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

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

      img

      通常有以下幾種 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)的間隔發(fā)送,消耗服務(wù)器連接資源。
      • CC 攻擊

        • 針對(duì)一些非常消耗資源的頁(yè)面,不斷發(fā)起請(qǐng)求。
        • 如:頁(yè)面中的某些頁(yè)面,需要后端做大量的運(yùn)算,或者需要做非常耗時(shí)的數(shù)據(jù)庫(kù)查詢(xún)。在大量的請(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 核心思路就是禁用不可信任的用戶(hù),確保資源都是被正常的用戶(hù)所使用。

      WebServer 配置安全

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

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

      • 以用戶(hù)權(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 端口,并且第一次訪(fǎng)問(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)該在寫(xiě)代碼時(shí)就將安全考慮其中,形成自己的一套安全開(kāi)發(fā)體系,做到心中有安全,時(shí)時(shí)考慮安全,就能無(wú)形之中化解不法分子的攻擊。

      精彩文章回顧,點(diǎn)擊直達(dá)
      轉(zhuǎn)了嗎
      贊了嗎
      在看嗎

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多