界: API Abuse

API 就像是呼叫者與被呼叫者之間簽訂的規定。最常見的 API 濫用形式是由呼叫者這一當事方未能遵守此規定所造成的。例如,如果程式在呼叫 chroot() 後無法呼叫 chdir(),即違反規範如何以安全方式變更使用中根目錄的規定。程式庫濫用的另一個好例子是期待被呼叫者向呼叫者傳回值得信賴的 DNS 資訊。在這種情況下,呼叫者是透過對其行為做出某些假設 (傳回值可用於驗證目的) 來濫用被呼叫者 API。另一方也可能違反呼叫者與被呼叫者間的規定。例如,如果編碼器衍生出子類別 SecureRandom 並傳回一個非隨機值,則違反了規定。

Often Misused: Mixing Template Languages

Abstract
若要防止修改 Cross-site scripting 防護,不應混用範本語言。
Explanation
混合範本引擎意味著先前以一種方式實作的防護不再運作或有效。在大多數理想的情況下,可能會導致功能無法如預期般運作,但還可能讓惡意使用者避免引擎中導致 Cross-site scripting 弱點的防護。

範例 1:在以下程式碼中,AngularJS 模組設定為針對運算式分隔符號使用「[[」和「]]」(而非預設值)。


myModule.config(function($interpolateProvider){
$interpolateProvider.startSymbol("[[");
$interpolateProvider.endSymbol("]]");
});


這可能會導致其他範本引擎執行驗證以去除運算式 (可能與 AngularJS 運算式不相容),可能會讓使用者能夠避開一般驗證並在瀏覽器內執行其自己的程式碼。
References
[1] AngularJS $interpolateProvider documentation Google
[2] Standards Mapping - General Data Protection Regulation (GDPR) Indirect Access to Sensitive Data
[3] Standards Mapping - OWASP Top 10 2021 A05 Security Misconfiguration
desc.structural.javascript.often_misused_mixing_template_languages