相當(dāng)令人印象深刻,對(duì)吧?

什么是訪問(wèn)控制?

好的,那么首先什么是訪問(wèn)控制? 

好吧,如果您已經(jīng)看到了登錄頁(yè)面,那么您已經(jīng)與訪問(wèn)控制的實(shí)現(xiàn)進(jìn)行了交互。 

訪問(wèn)控制,通常稱為授權(quán),是一組強(qiáng)制訪問(wèn)資源的機(jī)制和策略。 

通常,一旦服務(wù)器通過(guò)身份驗(yàn)證機(jī)制確定了您的身份,它就會(huì)授予或限制您在系統(tǒng)中可以訪問(wèn)的資源。 

此外,授權(quán)基礎(chǔ)設(shè)施是用戶跟蹤和資源監(jiān)控的支柱。 

充分實(shí)施強(qiáng)大而安全的訪問(wèn)控制系統(tǒng)是一項(xiàng)復(fù)雜而棘手的任務(wù)。訪問(wèn)控制本質(zhì)上與系統(tǒng)架構(gòu)密切相關(guān)。 

由于大多數(shù)平臺(tái)的用戶通常扮演多個(gè)角色,因此訪問(wèn)控制的復(fù)雜性可能會(huì)呈指數(shù)級(jí)增長(zhǎng)。 

開發(fā)強(qiáng)大的訪問(wèn)控制是一項(xiàng)艱巨的挑戰(zhàn),即使是經(jīng)驗(yàn)豐富的工程師也難以應(yīng)對(duì)。根據(jù)系統(tǒng)的規(guī)模和復(fù)雜性,適當(dāng)?shù)慕鉀Q方案可能意味著實(shí)施簡(jiǎn)單的身份驗(yàn)證、第三方庫(kù),甚至兩者兼而有之。 

值得慶幸的是,JavaScript 和 Angular 擁有流行且強(qiáng)大的解決方案,例如auth0JWT(JSON Web Tokens),等等。

什么是損壞的訪問(wèn)控制?

簡(jiǎn)而言之,破壞的訪問(wèn)控制包括可能影響您訪問(wèn)系統(tǒng)組件的威脅或漏洞。 

訪問(wèn)控制被破壞可能會(huì)給您的系統(tǒng)帶來(lái)災(zāi)難性的后果,因?yàn)樗试S攻擊者在您的平臺(tái)上肆意妄為。因此,解決任何存在的漏洞至關(guān)重要。 

訪問(wèn)控制漏洞

現(xiàn)在我們了解了訪問(wèn)控制中斷的概念,讓我們來(lái)討論一下這些攻擊的實(shí)際例子。 

我們將重點(diǎn)關(guān)注不安全的 ID、路徑遍歷、文件權(quán)限漏洞和客戶端緩存攻擊。

不安全 ID 的漏洞

大多數(shù)存儲(chǔ)數(shù)據(jù)的關(guān)系數(shù)據(jù)庫(kù)都使用 ID 來(lái)識(shí)別資源。此外,現(xiàn)代網(wǎng)站使用某種形式的 ID 或索引來(lái)快速高效地檢索數(shù)據(jù)。因此,如果您的網(wǎng)站允許用戶為這些敏感資源輸入他們的 ID,并且這些 ID 很容易猜到,那么您就很容易受到這種攻擊。 

讓我們舉例說(shuō)明。  

假設(shè)您有一個(gè)顯示用戶個(gè)人資料的個(gè)人資料頁(yè)面部分。然后以下 URL 檢索用戶個(gè)人資料。 

https://www.mywebsite.com/profile?id=123

但是,如果我手動(dòng)更改查詢字符串中的數(shù)字并且不存在活動(dòng)訪問(wèn)控制,那么我就可以訪問(wèn)任何配置文件。 

為了減輕這種脆弱性,我們必須在開發(fā)周期早期解決它。 

首先,ID 不應(yīng)容易被猜到。因此,您必須開發(fā)系統(tǒng),使所有 ID(或至少屬于敏感資源的 ID)都經(jīng)過(guò)混淆且獨(dú)一無(wú)二。您可以通過(guò)將全局唯一標(biāo)識(shí)符(或GUID)實(shí)現(xiàn)為 ID 來(lái)實(shí)現(xiàn)這一點(diǎn)。 

另一個(gè)可靠的解決方案將涉及每個(gè)請(qǐng)求的會(huì)話驗(yàn)證以及適當(dāng)?shù)脑L問(wèn)控制。 

Angular 損壞的訪問(wèn)控制指南:示例和預(yù)防措施

路徑遍歷漏洞

路徑遍歷背后的想法是在未經(jīng)授權(quán)的情況下瀏覽文件系統(tǒng)的目錄樹。?

這意味著允許用戶訪問(wèn)服務(wù)器文件系統(tǒng)中的資源的系統(tǒng)存在漏洞。 

如果路徑字符串可供修改且不存在驗(yàn)證,則此漏洞尤其危險(xiǎn)。 

為了說(shuō)明,請(qǐng)看以下場(chǎng)景。 

https://www.mywebsite.com/photos?file=user.png

在這種情況下,攻擊者可以將user.png更改為../../etc/passwd并訪問(wèn)應(yīng)用程序的數(shù)據(jù)。

為了減輕路徑遍歷攻擊,您必須對(duì)用戶輸入進(jìn)行適當(dāng)?shù)尿?yàn)證,并限制對(duì)應(yīng)用程序外部的服務(wù)器目錄的訪問(wèn)。 

幸運(yùn)的是,這方面的責(zé)任通常由服務(wù)器工程師承擔(dān)。但是,如果您啟用需要訪問(wèn)和修改服務(wù)器中的文件(如文件上傳)的功能,請(qǐng)確保實(shí)施強(qiáng)大且經(jīng)過(guò)測(cè)試的庫(kù)。 

文件權(quán)限漏洞

文件權(quán)限漏洞與服務(wù)器文件系統(tǒng)有關(guān)。 

應(yīng)用程序包含許多不應(yīng)修改的配置文件和資源,在大多數(shù)情況下,用戶無(wú)法讀取或執(zhí)行這些文件和資源。然而,如果沒有適當(dāng)?shù)呐渲貌呗裕粽呔涂梢悦闇?zhǔn)這些文件并控制整個(gè)平臺(tái)。 

為了說(shuō)明這一點(diǎn),這里有一個(gè)嘗試訪問(wèn)不可讀文件的示例。 

https://www.mywebsite.com/photos?file=../../angular.json

解決文件權(quán)限漏洞需要對(duì)服務(wù)器配置和維護(hù)有廣泛的了解。因此,我們建議您咨詢服務(wù)器工程師并避免觸碰任何東西。除非您絕對(duì)需要修改服務(wù)器權(quán)限以添加與文件操作相關(guān)的功能,否則請(qǐng)將此事留給服務(wù)器工程師。

Angular 損壞的訪問(wèn)控制指南:示例和預(yù)防措施

客戶端緩存漏洞

現(xiàn)在,您的某些客戶端很可能與其他用戶共享計(jì)算機(jī)。不幸的是,這是我們作為開發(fā)人員無(wú)法控制的情況,但它會(huì)導(dǎo)致客戶端緩存等漏洞。 

客戶端緩存漏洞很難緩解,因?yàn)樗鼈兩婕肮粽呃脮?huì)話憑證、緩存頁(yè)面或存儲(chǔ)在經(jīng)過(guò)身份驗(yàn)證的客戶端的瀏覽器中的數(shù)據(jù)。 

要利用此類漏洞,攻擊者需要物理訪問(wèn)受害者的計(jì)算機(jī)。一旦獲得訪問(wèn)權(quán)限,足夠有決心的攻擊者就可以破壞用戶數(shù)據(jù)。 

對(duì)于客戶端緩存,最有效的解決方案就是不在客戶端上存儲(chǔ)敏感的用戶信息。但是,如果由于某些業(yè)務(wù)需求而必須這樣做,請(qǐng)確保實(shí)施適當(dāng)?shù)?HTML 元標(biāo)記和異步驗(yàn)證以確認(rèn)顯示的權(quán)限。

實(shí)施訪問(wèn)控制

許多因素都會(huì)使解決訪問(wèn)控制漏洞變得非常簡(jiǎn)單或極具挑戰(zhàn)性。系統(tǒng)架構(gòu)、平臺(tái)復(fù)雜性和數(shù)據(jù)敏感性只是其中的一部分。 

保護(hù)系統(tǒng)安全的第一步應(yīng)該始終是實(shí)施適當(dāng)?shù)纳矸蒡?yàn)證機(jī)制。 

就安全性而言,實(shí)施auth0之類的解決方案?將幫助您實(shí)現(xiàn)大部分目標(biāo)。出于本文的目的,我們僅探討如何實(shí)施基本的 auth0 登錄。但是,如果您想要更多自定義功能,也可以探索 JWT 之類的解決方案。?

首先,運(yùn)行以下命令將 auth0 添加到您的 Angular 項(xiàng)目。 

ng add @auth0/auth0-angular

現(xiàn)在,轉(zhuǎn)到項(xiàng)目 src 文件夾內(nèi)的app.module.ts文件并導(dǎo)入模塊。您可以在此文件中指定域和客戶端 ID。 

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';

// Import the module from the SDK
import { AuthModule } from '@auth0/auth0-angular';

@NgModule({
declarations: [
AppComponent,
HomeComponent
],
imports: [
BrowserModule,
AppRoutingModule,

// Import the module into the application, with configuration
AuthModule.forRoot({
domain: 'YOUR_AUTH0_DOMAIN',
clientId: 'YOUR_AUTH0_CLIENT_ID',
}),
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

最后,轉(zhuǎn)到您想要添加登錄功能的組件并導(dǎo)入AuthService模塊。

import { Component } from '@angular/core';

// Import the AuthService type from the SDK
import { AuthService } from '@auth0/auth0-angular';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
title = 'My App';

// Inject the authentication service into your component through the constructor
constructor(public auth: AuthService) {}

loginWithRedirect(): void {
// Call this to redirect the user to the login page
this.auth.loginWithRedirect();
}
}

現(xiàn)在,您需要做的就是設(shè)置正確的域和客戶端 ID,添加一個(gè)按鈕來(lái)顯示登錄,瞧,您就擁有了一個(gè)具有身份驗(yàn)證機(jī)制的登錄功能。

Angular 損壞的訪問(wèn)控制指南:示例和預(yù)防措施

當(dāng)然,還需要進(jìn)行許多調(diào)整才能完成實(shí)施,但為此,我們將引導(dǎo)您訪問(wèn) auth0  wiki 頁(yè)面,其中有關(guān)于如何正確實(shí)施其解決方案的詳盡指南。

結(jié)論

現(xiàn)在您了解了什么是破壞的訪問(wèn)控制,以及如何通過(guò)結(jié)合適當(dāng)?shù)纳矸蒡?yàn)證機(jī)制、適當(dāng)?shù)南到y(tǒng)架構(gòu)實(shí)施和輸入驗(yàn)證來(lái)減輕其影響,您的系統(tǒng)就有更好的機(jī)會(huì)抵御潛伏在網(wǎng)絡(luò)上的惡意行為者。 

緩解訪問(wèn)控制漏洞的方法與漏洞數(shù)量一樣多。此外,網(wǎng)絡(luò)上每天都會(huì)出現(xiàn)新的威脅,其中任何一個(gè)都可能對(duì)我們的平臺(tái)造成毀滅性打擊。 

不幸的是,實(shí)現(xiàn)強(qiáng)大的訪問(wèn)控制策略可能是一項(xiàng)艱巨的任務(wù)。對(duì)于擁有眾多服務(wù)和前端的大型復(fù)雜平臺(tái)來(lái)說(shuō),情況尤其如此。  

盡管如此,我們必須盡力彌補(bǔ)盡可能多的差距。 

文章來(lái)源:Angular Broken Access Control Guide: Examples and Prevention

上一篇:

Kotlin HTTP嚴(yán)格傳輸安全指南:它是什么以及如何啟用它

下一篇:

DevOps實(shí)施指南:計(jì)劃、策略和步驟
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)