跳至主要內容

外掛後端 SDK 參考 ​

後端外掛程式碼在 Ogma 的 JavaScript 沙箱內執行,並從主應用程式接收 sdk 物件。

完整外掛套件格式、資訊清單欄位、權限及範例,請先參閱外掛系統指南。

進入點 ​

後端外掛提供 init 函式:

js
async function init(sdk) {
  sdk.console.log("plugin started");
}

啟用外掛時,Ogma 會呼叫 init(sdk)。

核心命名空間 ​

命名空間用途
sdk.console將訊息寫入外掛記錄緩衝區。
sdk.meta讀取外掛中繼資料及資料路徑。
sdk.events為 Ogma 事件註冊回呼。
sdk.requests查詢 HTTP 歷程記錄及請求資料。
sdk.findings在權限允許時查詢或建立檢測發現。
sdk.scope讀取目前測試範圍資訊。
sdk.storage以索引鍵/值方式持久儲存外掛狀態。
sdk.fs在外掛私有資料目錄內操作檔案。
sdk.path用於組合外掛資料目錄內路徑的輔助函式。
sdk.api向外掛前端提供後端處理函式。

記錄 ​

js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")

訊息會顯示在外掛記錄 UI 中。請保持記錄簡潔,避免寫入機密資訊。

中繼資料 ​

js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()

使用 sdk.meta.path() 儲存外掛專屬資料。不要假設沙箱中的外掛程式碼可以存取任意檔案系統路徑。

js
sdk.storage.set("key", "value")
sdk.storage.get("key")
sdk.storage.keys()
sdk.storage.delete("key")
sdk.storage.clear()
js
sdk.fs.readFile("relative/file.txt")
sdk.fs.writeFile("relative/file.txt", "text")
sdk.fs.appendFile("relative/file.txt", "more")
sdk.fs.exists("relative/file.txt")
sdk.fs.existsSync("relative/file.txt")
sdk.fs.mkdir("relative/dir")
sdk.path.join("a", "b", "c")

事件 ​

js
sdk.events.onInterceptRequest(function(req) {
  return req
})

sdk.events.onInterceptResponse(function(req, res) {
  sdk.console.log(res.getCode())
})

sdk.events.onProjectChange(function() {
  sdk.console.log("project changed")
})

回呼應快速完成。耗時較長的工作應改由明確的使用者操作或後端 API 處理函式觸發。

前端橋接處理函式 ​

後端外掛可向前端外掛面板提供處理函式:

js
sdk.api.register("ping", async function(input) {
  return { ok: true, input: input };
});

前端會透過 Ogma 前端 SDK 呼叫處理函式。參閱前端 SDK 參考。

安全要求 ​

  • 將 HTTP 流量、檢測發現、記錄及匯出內容視為敏感資料。
  • 只申請外掛所需的權限。
  • 預設情況下,絕不記錄認證資訊、Cookie、Bearer 權杖或私有流量。
  • 讓外掛行為明確,且容易讓使用者理解。

專有軟體。保留所有權利。