---
url: https://docs.ogmabox.com/ko/plugins/backend-sdk.md
description: Ogma 백엔드 플러그인 API, 샌드박스 실행, 저장소 경로, HTTP 기록 접근, 발견 사항, 명령 및 호스트 통합 참조입니다.
---

# 플러그인 백엔드 SDK 참조 {#plugin-backend-sdk-reference}

백엔드 플러그인 코드는 Ogma의 JavaScript 샌드박스에서 실행되며 호스트 애플리케이션으로부터 `sdk` 객체를 받습니다.

전체 플러그인 패키지 형식, 매니페스트 필드, 권한 및 예제는 [플러그인 시스템 가이드](./README.md)부터 확인하세요.

## 진입점 {#entry-point}

백엔드 플러그인은 `init` 함수를 제공합니다.

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

Ogma는 플러그인이 활성화될 때 `init(sdk)`를 호출합니다.

## 주요 네임스페이스 {#core-namespaces}

| 네임스페이스 | 용도 |
| --- | --- |
| `sdk.console` | 플러그인 로그 버퍼에 메시지를 기록합니다. |
| `sdk.meta` | 플러그인 메타데이터와 데이터 경로를 읽습니다. |
| `sdk.events` | Ogma 이벤트의 콜백을 등록합니다. |
| `sdk.requests` | HTTP 기록과 요청 데이터를 조회합니다. |
| `sdk.findings` | 권한이 허용하는 경우 발견 사항을 조회하거나 생성합니다. |
| `sdk.scope` | 현재 활성화된 점검 범위 정보를 읽습니다. |
| `sdk.storage` | 플러그인 상태를 키/값 형태로 영구 저장합니다. |
| `sdk.fs` | 플러그인 전용 데이터 디렉터리에서 파일 작업을 수행합니다. |
| `sdk.path` | 플러그인 데이터 디렉터리 내 경로를 구성하는 도우미입니다. |
| `sdk.api` | 백엔드 핸들러를 플러그인 프런트엔드에 제공합니다. |

## 로깅 {#logging}

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

메시지는 플러그인 로그 UI에 표시됩니다. 로그는 간결하게 작성하고 비밀 정보를 기록하지 마세요.

## 메타데이터 {#metadata}

```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")
```

## 이벤트 {#events}

```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 핸들러를 통해 실행하도록 분리하세요.

## 프런트엔드 브리지 핸들러 {#frontend-bridge-handlers}

백엔드 플러그인은 프런트엔드 플러그인 패널에서 사용할 핸들러를 제공할 수 있습니다.

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

프런트엔드는 Ogma 프런트엔드 SDK를 통해 핸들러를 호출합니다. [프런트엔드 SDK 참조](./frontend-sdk.md)를 확인하세요.

## 보안 준수 사항 {#security-expectations}

* HTTP 트래픽, 발견 사항, 로그 및 내보낸 데이터를 민감한 정보로 취급하세요.
* 플러그인에 필요한 권한만 요청하세요.
* 기본 동작으로 자격 증명, 쿠키, bearer 토큰 또는 비공개 트래픽을 로그에 기록하지 마세요.
* 사용자가 플러그인의 동작을 명확히 이해할 수 있도록 하세요.
