<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          2021 年保護(hù)JS 的 7 個(gè)步驟

          共 2895字,需瀏覽 6分鐘

           ·

          2021-07-07 23:08


          今天分享的內(nèi)容是 如何保護(hù)JavaScript的安全性。

          正文

          今天,JavaScript的使用無處不在。它在你的瀏覽器和后端運(yùn)行。

          此外,JavaScript是一個(gè)高度依賴第三方庫的生態(tài)系統(tǒng)。因此,確保JavaScript的安全需要遵循最佳實(shí)踐來減少攻擊。但是,我們?nèi)绾伪3諮avaScript應(yīng)用程序的安全?讓我們來了解一下。


          1. JavaScript的完整性檢查

          作為一個(gè)前端開發(fā)者,你可能已經(jīng)使用**< script >**標(biāo)簽來導(dǎo)入第三方庫。你想過這樣做的安全風(fēng)險(xiǎn)嗎?如果第三方資源被篡改了怎么辦?是的,當(dāng)你在你的網(wǎng)站上渲染外部資源時(shí),這些事情都可能發(fā)生。因此,你的網(wǎng)站可能會面臨一個(gè)安全漏洞。作為對此的安全措施,你可以在你的腳本中添加一個(gè)完整性(也稱為子資源完整性--SRI)代碼,如下所示。

          <script
            src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
            crossorigin="anonymous">
          </script>

          完整性屬性允許瀏覽器檢查獲取的腳本,以確保如果源頭被篡改,代碼永遠(yuǎn)不會被加載。

          注意:還是要確保你最初引用的代碼不包含任何漏洞。

          2. 經(jīng)常測試NPM的漏洞

          我希望你們都知道,我們可以使用npm audit 命令來檢測所有安裝的依賴關(guān)系的漏洞。它提供漏洞報(bào)告,并為它們提供修復(fù)。

          但你多長時(shí)間做一次呢?

          除非我們把它自動化,否則這些漏洞會堆積起來,使之難以修復(fù)。記住,其中一些甚至可能是關(guān)鍵的,允許嚴(yán)重的漏洞。作為一個(gè)解決方案,你可以在你的CI中為每個(gè)拉動請求運(yùn)行NPM來識別漏洞。因此,你可以防止任何漏洞不被注意到。

          NPM audit security report example

          然而,有一些漏洞需要開發(fā)人員的手動干預(yù)才能解決。

          GitHub的一個(gè)額外舉措

          最近,GitHub推出了一個(gè)名為Dependabot的機(jī)器人,自動掃描NPM的依賴關(guān)系,并通過電子郵件通知你,說明風(fēng)險(xiǎn)。

          One such email I have gotten for one of my projects

          3. 保持次要和補(bǔ)丁版本更新

          你有沒有見過任何NPM軟件包版本前面的^或~符號?

          這些符號表示對次要版本和補(bǔ)丁版本(取決于符號)的自動版本提升。從技術(shù)上講,次要版本補(bǔ)丁版本都是向后兼容的,減少了給應(yīng)用程序引入錯(cuò)誤的風(fēng)險(xiǎn)。

          由于大多數(shù)第三方庫發(fā)布的熱修復(fù)漏洞都是補(bǔ)丁版本的顛簸,至少啟用自動補(bǔ)丁更新有助于降低安全風(fēng)險(xiǎn)。


          4. 具備驗(yàn)證功能以避免注入病毒

          作為一條經(jīng)驗(yàn)法則,我們不應(yīng)該只依賴客戶端驗(yàn)證,因?yàn)楣粽呖梢愿鶕?jù)需要改變它們。然而,通過對每個(gè)輸入的驗(yàn)證,可以省略一些JavaScript注入。

          例如,如果你在評論區(qū)輸入帶有引號的東西< script > </script/> ,這些引號將被替換成雙引號 << scrip t>< /script>>。那么輸入的JavaScript代碼將不會被執(zhí)行。這被稱為跨網(wǎng)站腳本(XSS)。

          同樣地,還有一些其他常見的方法來進(jìn)行JavaScript注入:

          • 使用開發(fā)人員的控制臺來插入或更改JavaScript。
          • 在地址欄中輸入 "javascript:SCRIPT"。

          防止JS注入對保持你的應(yīng)用程序的安全是很重要的。

          就像我之前提到的,有驗(yàn)證的地方是防止它的一個(gè)方法。

          例如,在保存任何輸入到數(shù)據(jù)庫之前,用 &lt ; 替換所有 < ,用 &gt ; 替換所有 >。


          內(nèi)容安全策略(CSP)是另一種避免惡意注入的方法。使用CSP是非常直接的,如下所示。

          Content-Security-Policy: trusted-types;
          Content-Security-Policy: trusted-types 'none';
          Content-Security-Policy: trusted-types <policyName>;
          Content-Security-Policy: trusted-types <policyName> <policyName> 'allow-duplicates';

          關(guān)于CSP的更多信息,請參考這些指南。

          https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP


          5. 始終保持嚴(yán)格模式的開啟

          開啟嚴(yán)格模式會限制你寫不安全的代碼。

          此外,啟用這種模式是很簡單的。就像在你的JavaScript文件中加入下面這一行一樣簡單。

          use strict

          當(dāng)嚴(yán)格模式開啟時(shí):

          • 它對一些以前保持沉默的錯(cuò)誤拋出了錯(cuò)誤。
          • 修正了使JavaScript引擎難以進(jìn)行優(yōu)化的錯(cuò)誤。
          • 禁止使用可能會在未來版本的ECMAScript中定義的保留詞。
          • 當(dāng)采取 "不安全 "的行動(如獲得對全局對象的訪問)時(shí)拋出錯(cuò)誤。
          • 多年來,每個(gè)現(xiàn)代瀏覽器都支持嚴(yán)格模式。如果瀏覽器不支持嚴(yán)格模式,該表達(dá)式將被簡單地忽略。

          6. Lint Your Code

          Linters對你的代碼庫進(jìn)行靜態(tài)分析。它有助于建立質(zhì)量和避免常見的陷阱。

          由于質(zhì)量與安全是相輔相成的,檢查有助于減少安全風(fēng)險(xiǎn)。

          我們對JavaScript使用的幾個(gè)流行的工具如下:

          • JSLint
          • JSHint
          • ESLint

          此外,像SonarCloud這樣的工具也可以用來識別代碼氣味和已知的安全漏洞。一份Sonar報(bào)告將看起來像這樣。

          注意:正如你在上圖中看到的,它有一個(gè)安全部分,顯示了漏洞、安全熱點(diǎn)。


          7. 簡化和美化你的代碼

          攻擊者通常會試圖理解你的代碼,以入侵他們的方式。

          因此,在生產(chǎn)構(gòu)建中擁有一個(gè)可讀的源代碼會增加攻擊性。作為一種常見的做法,如果你對你的JavaScript代碼進(jìn)行最小化和丑化,就很難利用你編寫的代碼中的漏洞。

          然而,如果你想采取極端的措施來隱藏你的代碼,不被用戶/客戶發(fā)現(xiàn),那么它應(yīng)該被保存在服務(wù)器端,根本不需要發(fā)送到瀏覽器上。


          最后

          注重安全是非常重要的,特別是在JavaScript應(yīng)用程序中,要使你的應(yīng)用程序安全。

          此外,如果你想尋求高級的解決方案。在這種情況下,有一些工具,如Snyk、WhiteSource,它們專門掃描你的代碼中的漏洞,并通過連續(xù)的集成將其自動化。

            瀏覽 62
            點(diǎn)贊
            評論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            評論
            圖片
            表情
            推薦
            點(diǎn)贊
            評論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            <kbd id="afajh"><form id="afajh"></form></kbd>
            <strong id="afajh"><dl id="afajh"></dl></strong>
              <del id="afajh"><form id="afajh"></form></del>
                  1. <th id="afajh"><progress id="afajh"></progress></th>
                    <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    亚洲丁香婷婷 | 翔田千里无修正XXX | 女主播操逼网站 | 青娱乐社区精品自拍视频 | 国产变态视频a片一二三 |