
構建高效API的10個API設計最佳實踐
隨著修復通過傳統測試模型發現的錯誤所花費的成本和時間的增加,將測試轉移到軟件開發生命周期 (SDLC) 的早期階段的想法越來越流行。事實上,87%的公司采用這種敏捷方法進行軟件測試。
左移測試的目標是通過對軟件開發計劃進行早期和頻繁的測試來減少在項目代碼中發現的錯誤數量。
在本章中,我們將介紹傳統和敏捷測試方法之間的差異。
測試是產品開發過程中必不可少的一部分,因為它有助于確保您開發的產品在完成后能夠真正發揮作用。?
可視化生產的最佳方式之一是想象一條傳送帶穿過工廠。隨著流程的推進,不同的組件被添加,最終形成成品。
但測試的最佳點在哪里呢?這個問題一直是專家們熱議的話題。
一些人認為,在應用程序編程接口(API)和圖形用戶界面(GUI)完成時需要進行測試,而其他人則認為在部署之前有些地方值得進行測試。
他們通常分為兩大陣營:傳統測試和敏捷測試或轉變測試(新的多數派發現自己屬于這一類)。
這種測試方法通常發生在最后階段之前(如果你愿意的話,是傳送帶的右側而不是左側),這是有道理的,因為有更多的產品需要檢查錯誤。
話雖如此,在產品投入生產之前使用傳統的手動測試方法來驗證產品的安全性和功能性仍存在困難。
由于此測試發生在開發周期的后期,發現錯誤或可用性問題通常會導致發布延遲,直到這些問題得到解決,從而造成瓶頸。
這導致許多實施傳統測試的公司開始進行不定期發布,因此這些問題不再阻礙進展。
此外,隨著項目接近尾聲,修復這些錯誤和缺陷的成本也會大幅上升。僅憑這一點就可能導致成本和預算嚴重超支,從而推遲甚至破壞整個項目。
來源:www.stickyminds.com
優點:
缺點:
與傳統測試不同,這種形式的敏捷測試從生產后開始測試,或者一直到傳送帶的“右側”。
使用右移方法,您將測試完整且正常運行的應用程序,以確保性能和可用性。目標用戶提供有關其體驗的反饋,以進一步改進軟件。
利用右移測試的常見測試技術包括:
雖然這種敏捷方法允許您與用戶合作以改進您的產品,但這種測試僅在后期生產環境中有效。它需要輔以左移測試才能為您提供全面的結果。
優點:
缺點:
為了防止錯誤變成代價高昂的大問題,左移測試實際上是通過盡可能在開發過程的早期識別和解決問題,將測試推向“左邊”。
值得注意的是,左移并不意味著將測試轉移到更早的階段并忽略再次測試。
相反,左移測試鼓勵開發人員和測試人員盡早開始測試并不斷檢查錯誤,而不是只關注開發的一個階段。
對于 API 來說,關鍵是能夠盡早測試功能應用程序,以便您可以試用所有功能并查看是否存在任何邏輯缺陷、漏洞或安全漏洞。
例如,為了解決應用程序中的BOLA/IDOR 缺陷,您需要運行測試來驗證用戶 A 不能查看/修改/刪除屬于用戶 B 的轉賬。
USPS數據泄露事件就是該漏洞的一個完美例子——用戶能夠進行身份驗證,然后查找系統中的任何其他用戶,包括他們的電子郵件地址、電話號碼、街道地址和其他 PII。
這里左移測試的主要好處是,如果應用程序中存在缺陷,您可以在投入生產之前發現它,而惡意的人可能會首先發現它。
這種方法不僅僅需要改變流程,還需要轉變參與者的思維方式,以便他們在每個階段都能持續提供反饋。
左移測試是一種很好的方法,可以防患于未然,而不是事后才做出反應。開發人員在將代碼推送到版本控制之前進行的測試越多越好。
優點:
缺點:
DevOps 的核心在于速度、敏捷性和效率。為了實現這些目標,組織需要向左轉。這意味著要擺脫傳統的“瀑布式”方法,轉向更敏捷的方法。
左移策略確保在開發生命周期中盡早考慮安全性。
左移有很多好處。以下是影響最大的好處:
左移的主要好處是它減少了最終產品的缺陷數量,提高了整體質量。實施左移方法的公司質量提高了45% 。
通過在開發過程的早期(在產品發布之前)識別和解決問題,這些缺陷進入成品的可能性就會降低。
此外,左移鼓勵團隊成員之間的協作和溝通。使用敏捷方法的企業通常會看到團隊生產力提高60%,可見性提高 70%。
通過盡早讓測試人員參與,開發人員可以獲得有關其代碼的反饋并做出相應的更改,從而實現更積極、更高效的整體開發過程。
左移還有助于縮短開發時間。實施左移等敏捷實踐的企業的交付時間縮短了64%。
如果及早發現缺陷,在它們演變成更大的問題之前,就更容易解決,這使得開發團隊能夠專注于新功能和改進,而不是修復錯誤。
左移可降低與開發相關的成本。在開發過程中越早發現漏洞,修復成本就越低。
來源:波耐蒙研究所
及早發現并解決缺陷就無需重新編寫代碼,從而為開發組織節省大量成本。
現在您對左移有了更好的了解,讓我們來探索一下它如何影響 DevOps。
GitHub估計開發人員的數量是安全專業人員數量的 500 倍,這意味著組織需要將左移安全措施整合到其開發中才能保持競爭力。
傳統測試的使用通常與 DevOps 不符,DevOps 強調將功能和更新從一個生產階段傳遞到下一個生產階段,而不會出現不必要的延遲。
他們是如何解決這個問題的?通過將左移等敏捷方法應用到 DevOps 實踐中。
左移意味著將測試和安全活動整合到從設計到生產的每個相關開發階段。
這一轉變的目標很簡單:
為了有效而高效地做到這一點,開發人員必須了解每個階段需要什么,以避免在防御惡意行為者可能利用的漏洞方面出現漏洞。
CI/CD 的采用改變了 SDLC,因為它可以自動化和監控開發過程的每一步,從代碼集成到實時生產環境。
除了將團隊重組為 DevSecOps 團隊之外,公司還必須將安全測試盡早納入其部署流程,因為 CI 對于軟件開發仍然至關重要。
左移測試是一種在缺陷造成巨大損失之前識別和修復缺陷的有效方法,這意味著您的團隊可以在開發周期中取得更快的進展。
其他好處包括:
為了確保組織保持高水平的安全性,OWASP建議 DevSecOps 使用各種工具。以下是五種常用的工具:
工作原理: | DevSecOps 方法: | |
SAST(靜態分析) | 在此過程中,通過訪問靜態源代碼進行結構測試,并生成有關任何潛在問題和解決方案的報告。 | 將這些測試集成到您的開發人員的開發環境中,以便立即獲得有關可能出現的問題的警告。 |
DAST(動態分析) | 該技術通過由外而內的方法滲透到應用程序的前端,并像攻擊者一樣發現安全漏洞。 | 在整個公司網絡基礎設施中推出應用程序之前,請在測試和登臺環境中使用它來驗證應用程序的安全性。 |
交互式應用安全測試 (IAST) | 使用預定義的測試用例,混合 IAST 工具可以識別相關的代碼行并在正在運行的應用程序中提供上下文補救建議。 | 通過在 SDLC 和 CI/CD 工作流程的早期階段集成此工具來降低安全漏洞的風險。 |
軟件組成分析(SCA) | 該技術用于識別系統組件,如開源和第三方庫,并告知您這些文件中存在的潛在漏洞。 | 將 SCA 與 SAST 配對以查找掃描無法檢測到的漏洞。 |
云安全態勢管理 (CSPM) | 使用此方法自動評估您的多云基礎設施中可能存在的漏洞。 | 在整個開發過程中,根據環境對漏洞進行優先排序,實施此過程。 |
在上一章中,我們概述了左移策略如何幫助您的組織實現可持續軟件開發。在本章中,我們將探討優化左移方法以最大程度發揮其優勢的方法。
應用左移測試的最佳方法是跨團隊進行小規模的迭代更改。以下是一些可以開始實施的更改:
作為第一步,您需要幫助您的團隊了解左移測試的好處,通過確定如何在整個 SDLC 中應用這種方法,而不僅僅是作為一個時間過程。
降低風險的最佳方法是在各個階段進行測試,并在整個過程中繼續努力。請記住,左移測試并不意味著將測試移至較早的階段并忽略稍后的測試。
這將導致流程效率低下,遺漏一些缺陷或漏洞,如果經過更徹底的測試,這些缺陷或漏洞是可以得到補救的。
您需要關注:
雖然在流程早期進行測試是左移測試的主要目標,但早期測試和實際測試之間存在著一條細微的界限。
這意味著您不想將測試移得太“左”,以至于在它提供可操作的信息之前它就會發生。
為了避免產生左移測試浪費,您需要評估:
在左移方法中,開發人員和測試人員應該一起工作。
當開發人員測試單個單元時,他們能夠在合并到主系統之前獲得更高質量級別的代碼。
此外,QA 應該了解一些基本的編碼,以幫助他們提高效率。編碼技能使測試人員能夠盡可能快速修復問題,這將使他們在修復錯誤時的工作更加輕松。
為了鼓勵最大程度的協作,您需要確保他們能夠使用相同的測試實踐,例如測試驅動開發 (TDD) 或行為驅動開發 (BDD)。這可以鼓勵每個人保持一致。
API 占互聯網總流量的83%,Gartner甚至報告稱,API 很有可能在 2022 年成為主要的攻擊媒介。
由于 API 是許多數字化工作的支柱,因此您需要確保它們的安全。
如果沒有自動化測試解決方案,左移測試相對無效,因為您將在此過程中累積大量開發成本。
緩解這種情況的一種方法是使用可以減少或消除對額外開發資源的需求的工具。
在本章中,我們將了解如何在組織中實際開始實施左移安全。
左移安全性可以通過多種方式實現,但這是最重要的五個步驟。
確定左移對團隊意味著什么,以幫助他們了解如何取得成功至關重要。為此,您需要:
DevSecOps 的目標是促進參與開發過程的所有利益相關者之間的協作與協調。
為此,各團隊需要齊心協力,明確制定左移安全策略的目標和目的。這應包括:
實現以安全為中心的開發環境,在開發生命周期的每個階段都會考慮安全性 — — 無論是在項目規劃、開發代碼還是進行測試期間選擇包。
您很可能需要做一些左移神話破除,以促進平穩過渡。最常見的誤解是左移意味著將測試移至較早的階段,然后忽略稍后的測試。
由于 API 是系統的窗口,因此應用程序的安全性取決于您為其制定的安全策略。將 API 的安全要求納入您的左移安全策略將增強您的安全態勢。
在建立一組 API 安全要求時需要考慮一些因素,例如:
例如,如果 API 正在由許多用戶在公共環境中訪問敏感數據,那么就需要更高級別的安全性。
在確定 API 的安全要求時,咨詢該領域的專家至關重要。他們將能夠幫助確定需要采取哪些安全措施來保護 API 訪問的數據。他們還將幫助確定需要什么級別的安全性。
了解軟件開發流程是確保其安全的重要第一步。根據業務部門的復雜程度,這一步的難度會更大。
在開始將安全性左移之前,請確定誰負責開發代碼,以及該人員或團隊如何從創建新功能到部署再到生產。
這可以幫助您確定在整個過程中將使用哪種技術,從而避免出現差距。請確保您確定:
通過 API,應用程序和軟件可以與您的企業進行交互,讓外部人員直接訪問敏感信息。如果沒有適當的安全措施,網絡犯罪分子就會利用這些漏洞。
為了解決OWASP 的十大 API 安全風險,建議您在 API 級別實施安全控制,這有助于保護您的數據和系統。一些最廣泛使用的安全措施包括:
滲透測試和漏洞掃描程序是測試 API 安全性的最常用方法。然而,在使用左移安全方法時,它們各自都有獨特的問題。
部署漏洞掃描程序是為了針對一系列已知漏洞測試您的 API,但它們不會考慮您的 API 架構。這意味著它們會錯過讓您易受攻擊的業務邏輯缺陷。
另一方面,滲透測試人員使用黑盒或白盒測試方法來模擬對 API 的攻擊,當應用于左移測試框架時,這些方法極其耗時且成本高昂。
在開發代碼時實現安全修復非常重要,這樣您的應用程序和 API 就不會出現漏洞。
修復代碼后重新測試是個好主意,因為漏洞經常在修復后出現。這可確保沒有留下任何薄弱環節,攻擊者可以利用這些簡單的錯誤。
為您的 DevSecOps 團隊提供實施左移安全所需的工具。聯系我們的團隊安排免費演示。
左移等敏捷開發實踐的廣泛采用使 IT 決策者能夠獲得更高的收入。目前83% 的企業實施 DevOps 策略來確保其流程正常運轉。
在 DevOps 實踐中向左轉變可能是一個挑戰,但如果您真的想改進流程,那么這絕對值得去做。
以下是一些幫助您成功實施左移的最佳實踐:
生產故障經常被忽視的原因有很多。最常見的原因之一是開發人員和運營團隊使用的程序和工具彼此不同。
為了取得成功,運營和開發需要對部署程序有共同的理解。團隊協調一致將使他們能夠更快、更有效地發現和解決問題。
關于如何在組織內最好地實施左轉戰略,并沒有一個放之四海而皆準的答案;然而,我們建議從小處著手,隨著時間的推移逐漸增加左轉努力的范圍和深度。
一種方法是先找出浪費或效率低下的領域。這些領域通常是仍在使用手動流程的領域,而自動化流程會更有效,例如滲透測試。
一旦確定了這些領域,您就可以開始以適合您的組織的方式實施左移原則。
開發和生產環境越相似,越容易避免錯誤。您可以使用正確的模式和云技術模擬生產環境。
測試是質量保證的重要組成部分,需要在整個開發過程中進行。持續測試可讓您更快地發現問題,因此修復這些問題的成本會更低。
CI/CD 使軟件開發過程自動化,以便更快地進行更改和測試。這意味著可以在開發周期的早期發現并修復問題,以免它們對生產造成影響。
自動化團隊在編碼和部署階段整合的越多,他們就能越快地開發代碼、運行更多測試、集成更改,并在每項活動上花費更少的時間。
常見的自動化測試有三種類型:
文章來源:Shift Left Security: The Ultimate Guide