Domain 8: Software Development Security Flashcards
(23 cards)
ACID 交易(ACID Transaction)
一種資料庫交易的類型,其特徵為原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)與持久性(Durability),是維護資料完整性的關鍵。
這是一個用於資料庫管理的概念,確保所有資料庫交易都能被可靠地處理。
ACID 代表以下四個特性:
原子性(Atomicity):交易具有「全有或全無」的特性,要麼完全成功,要麼完全失敗,不會執行一半。
一致性(Consistency):交易完成後,資料庫必須維持在一致與正確的狀態。
隔離性(Isolation):各筆交易之間互相獨立執行,不會互相干擾。
持久性(Durability):一旦交易被提交,其結果會被永久保存,即使系統故障也不會遺失。
這個架構對於跨各種應用場景維持資料完整性來說至關重要。
對抗性機器學習(Adversarial Machine Learning)
對抗性機器學習(Adversarial Machine Learning) 是研究攻擊者如何欺騙或操縱機器學習模型的技術,藉此揭示模型的脆弱點,並指導如何防禦這些欺騙性或破壞性的輸入。
在對抗性機器學習中,攻擊者會設計特製的輸入,利用模型的缺陷來導致錯誤分類或意外的結果。攻擊方式可能包括:
污染訓練資料(poisoning),
在實時系統中注入惡意資料,
對模型進行逆向工程,以產生具有破壞性的樣本。
防禦措施則包含:
強化訓練方法,
提升模型可解釋性,
持續監控系統運作狀態。
透過研究這些對抗技術,資安團隊能夠辨識模型弱點,並實施有效的防護對策。這個領域對於保護各行各業的 AI 應用至關重要,涵蓋從醫療、金融到自動駕駛等系統。
敏捷開發(Agile)
一種靈活且具迭代性的開發方法論,重視適應性、顧客滿意度與快速、持續的交付,並經常納入資安最佳實務。
這種方法論常用於軟體開發中,強調彈性、協作、顧客滿意以及快速交付。
與其一開始就為整個專案做出詳細規劃,敏捷方法鼓勵:
適應性規劃、
漸進式開發、
早期交付、
以及持續改進。
這種做法對資安實務有顯著幫助,因為它能從開發初期就納入安全考量,並能快速因應新出現的威脅。
API 衝突(API Conflicts)
因為功能重疊、不一致性或版本不相容,導致 API 行為異常所產生的問題,需要透過謹慎的設計與測試來解決。
當 API 的執行結果與預期不符時,可能是因為:
功能之間的重疊,
不同 API 呼叫間的行為不一致,
或是版本不相容所造成的。
為了解決這些 API 衝突,通常需要進行:
謹慎的 API 設計、
充分的測試、
以及良好的版本控管,
以防止並排除這類問題。
API Endpoint(API 端點)
API 與使用它的軟體之間的特定互動點,在 Web API 中通常以 URL 的形式定義,用於執行不同的功能與資料操作。
API 端點是指 API 與其他軟體元件之間的通訊或互動的具體位置。
在 Web API 的情境中,端點通常是指一個特定的 URL,API 透過這個 URL 來接收或傳送資料。
每個端點都對應到一個特定的功能或資料資源,並接受特定類型的請求,例如:
GET(取得資料)、
POST(新增資料)、
PUT(更新資料)、
DELETE(刪除資料),
這些是 RESTful API 中常見的操作方法。
Java Applet(Java 小應用程式)
一種嵌入在網頁中的小型程式,用於提供互動式體驗,傳統上以 Java 為基礎,但由於安全性問題與瀏覽器外掛支援的減少,已逐漸不再常用。
這類小型程式在使用者的瀏覽器中執行,屬於客戶端(Client-side)應用程式,常被用來提供互動功能。
過去,Java Applet 是這類技術的代表,但由於:
安全性疑慮、
現代瀏覽器逐步淘汰對外掛(plugin)的支援,
Java Applet 的使用率大幅下降。
現今的網頁應用程式則多改採:
HTML5、
JavaScript、
或 WebAssembly(WASM)
這些技術可直接在瀏覽器中建立動態且互動的使用者體驗,不需額外安裝外掛程式。
應用程式(Application)
一種設計來幫助使用者執行特定任務的程式,範圍從大型系統(如企業資源規劃軟體)到個人使用的生產力工具皆有。
在電腦領域中,「應用程式」是指一種讓使用者能執行特定任務或活動的軟體程式。
這類程式的範圍可以很廣,包含:
像企業資源規劃(ERP)這樣的大型系統,
也包括文書處理器、遊戲等較小型的工具或娛樂應用。
應用程式通常會與使用者互動,並根據使用者的輸入與內建邏輯處理資料、產生所需的結果。
軟體採購前安全性評估(Application Acquisition Review)
在採購軟體之前,對其安全性與適用性進行評估,涵蓋合規性、潛在漏洞以及供應商的可靠性等因素。
這是一個在軟體採購流程中的階段,用來評估所選軟體在安全性與適用性方面是否符合需求,以便在正式購買前做出明智決策。
評估內容可能包括:
軟體是否符合資訊安全標準與合規要求,
是否與現有系統相容,
是否存在已知或潛在的安全漏洞,
以及供應商的聲譽與可信度。
這項評估的目標是確保軟體:
符合組織的使用需求,
並且不會帶來不可接受的安全風險。
應用程式架構(Application Architecture)
軟體應用程式的結構設計,定義各元件間的互動方式,以滿足業務需求,並確保功能性、安全性與可管理性。
軟體架構是指應用程式的高階結構設計,涵蓋:
各個元件(components)如何互相連接與協作,
以及這些設計如何回應使用者需求與業務目標。
這個過程需要根據業務需求與限制條件,規劃系統中元件的功能與關係,從而確保整體系統的:
功能性(Functionality),
效能(Performance),
安全性(Security),
可管理性(Manageability)。
應用程式效能測試(Application Benchmarking)
對應用程式進行效能測試,以識別問題並建立未來評估的標準,確保在各種情境下的可靠性與效率。
這是一種在特定條件下測試應用程式的實務,用來評估其效能特性,例如:
回應速度(Responsiveness)、
處理量(Throughput)、
資源使用情況(Resource Usage)。
透過這項測試,可以:
找出系統中的瓶頸或弱點,
並建立一個效能基準,用於未來系統變更時的比較依據。
這個過程有助於確保應用程式在不同使用情境下的:
穩定性(Reliability)、
效率(Efficiency)、
強健性(Robustness)。
應用程式開發審查(Application Development Review)
在應用程式開發過程中進行評估,確保其符合需求與標準,重點關注設計、程式撰寫、測試與資安等方面。
這個審查是在開發階段進行的評估程序,目的是確認應用程式是否符合預先規範的需求與開發標準。
審查內容可能涵蓋以下幾個面向:
系統設計
程式碼品質
測試覆蓋與效能
安全性實務(如輸入驗證、權限控管)
透過這項審查,可以在開發初期及早發現並修正問題或資安漏洞,從而提升最終產品的品質與安全性。
應用程式強化(Application Hardening)
透過減少攻擊面與潛在漏洞,來提升應用程式的安全性,例如移除未使用的功能、定期更新軟體等方式。
這是一種提升應用程式安全性的過程,目的在於降低攻擊面並最小化潛在的資安弱點。
常見的強化技術包括:
移除未使用的功能或模組
停用不必要的服務
設定安全性較高的系統參數
定期更新軟體,以修補已知漏洞
透過應用程式強化,組織能更有效地防止未授權存取或被利用的風險,從而保護系統與資料安全。
應用程式部署審查(Application Implementation Review)
對新部署的應用程式進行評估,以確保其達成預期目標,並符合組織政策與資安標準,內容可能包含設定、整合與效能等檢查。
這是一項針對新部署應用程式所進行的審查,目的是確認該應用是否:
實現既定的功能與業務目標,
並遵循組織內部的政策規範與資訊安全標準。
審查內容可能包括:
應用程式的設定檢查,
與其他系統的整合情況,
以及其整體效能表現。
這項評估有助於在部署後及早發現並修正潛在問題或漏洞,確保系統的穩定與安全運作。
應用程式介面(API, Application Programming Interface)
一組用於建立軟體應用的協定與工具,規範不同軟體元件之間應如何互動,扮演程式之間溝通的橋樑。
API(應用程式介面)是一組用來開發軟體與應用程式的協定與工具,它定義了不同軟體元件之間的互動方式。
API 就像一個翻譯員,負責讓兩個彼此「語言不同」的應用程式可以順利溝通與協作。
它的作用是作為中介層,讓開發者可以透過統一的方式調用功能或取得資料,而不需要了解背後的實作細節。
應用程式安全(Application Security)
一系列保護應用程式免受威脅的實務作法,透過控管存取權限、加密等方式,確保其處理與儲存資料的機密性、完整性與可用性。
應用程式安全是為了防止應用程式遭受各種威脅與漏洞攻擊,以確保其所處理與儲存的資訊具備:
機密性(Confidentiality)
完整性(Integrity)
可用性(Availability)
這是資安中的一項關鍵領域,常見的安全措施包括:
存取控制(Access Control)
資料加密(Encryption)
漏洞管理(Vulnerability Management)
其他應用程式安全的實作範例還包括:
防火牆(Firewalls)
入侵偵測系統(Intrusion Detection Systems, IDS)
密碼政策與驗證機制(Password Policies)
應用程式軟體追蹤與映射(Application Software Tracing and Mapping)
分析應用程式的結構與行為,藉此偵測漏洞、效能瓶頸或低效率情況,是維護應用效能與安全性的關鍵過程。
這是一種分析並視覺化軟體應用程式行為與結構的流程,目的是更清楚地了解應用內部的流程運作與元件間的相依關係。
這個過程有助於:
發現資安漏洞、
找出效能瓶頸或低效率區塊。
由於現代應用程式日益複雜,追蹤(Tracing)與映射(Mapping)工具已成為確保應用程式效能與安全性的重要手段。
應用系統(Application System)
由多個協同運作的應用程式所組成,用來提供特定功能或服務,通常包含使用者介面、資料庫與處理流程,其中資安維護至關重要。
應用系統是指一組協同工作的應用程式,它們共同提供某種特定的功能或服務。這類系統通常包含:
多個使用者介面、
資料庫元件、
與各種背景處理流程。
這些系統可能相當複雜且高度整合,因此:確保其資料的完整性、機密性與可用性,是維持安全營運的重要一環。
用層加密(Application-Level Encryption)
在應用程式層級對資料進行加密,而非在網路層或傳輸層,藉此保護敏感資訊,確保機密性、完整性與可用性。
這種加密方式是在資料進入網路傳輸或儲存前,由應用程式本身直接執行加密,以提升資安保護層級。
常見例子包括:
在將密碼寫入資料庫前先加密
在將檔案透過網路傳輸前進行加密
在處理交易前先加密信用卡資訊
這種作法可有效保護敏感資料,即使系統或通訊遭攔截,也難以解讀原始內容,進一步確保資料的機密性、完整性與可用性(CIA)。
核准的 API(Approved APIs)
指那些經過審核並獲准在特定環境中使用的應用程式介面,符合安全性、可靠性與效能的標準。
核准的 API 是指已被審查並正式批准可用於系統或開發環境中的應用程式介面。這些 API 被認可為達到了特定的:
資安要求、
系統穩定性(可靠性)、
以及效能標準。
使用核准的 API 有助於:
維持應用程式與系統的整體安全性,
避免使用來路不明或惡意的 API,進而降低漏洞風險與資料外洩事件。
組合語言(Assembly Language)
一種低階程式語言,與電腦的機器碼緊密對應,讓開發者能以相對可讀的格式直接控制硬體。
組合語言是一種針對電腦或可程式化裝置所設計的低階程式語言,其語法與該系統的機器碼指令高度對應。
與可跨平台使用的高階語言不同,每種組合語言都依賴特定的硬體架構(如 x86、ARM)。
由於它能提供對系統流程的直接控制,組合語言常被應用於:
逆向工程(Reverse Engineering)、
惡意程式分析(Malware Analysis)、
或需高度效能與精細控制的嵌入式系統開發中。
後門(Backdoor)
一種繞過正常安全機制、取得未經授權系統存取權的方法,可能是為了維護方便而故意設置,也可能被攻擊者利用。
後門是一種隱密的方式,用來繞過系統的身份驗證或加密機制,使得未經授權的使用者能夠進入系統或取得控制權。
雖然某些後門可能是:
系統開發者為了維護或除錯目的而預設植入,但這樣的機制也可能被惡意攻擊者發現並加以利用,導致:
資料外洩、
系統損壞,
或其他嚴重的資安風險。
區塊鏈(Blockchain)
一種使用密碼學保護紀錄的分散式帳本技術,應用於去中心化系統中,用以安全且透明地儲存與驗證資料,例如數位貨幣。
區塊鏈是一種分散式資料庫技術,它維護著一串不斷增長的資料紀錄(稱為區塊),每個區塊都透過加密技術保護。
區塊鏈常見於:
數位貨幣(如比特幣)、
以及各類分散式系統中,
用來實現一種無需中央機構就能進行資料儲存與驗證的方法,具備:
安全性高、
難以竄改、
資訊透明可追溯等特性。
例如,在區塊鏈網路中可以記錄並驗證交易,讓所有參與者都能共同維護一致的資料真實性。