apiKey는 클라이언트 측에 존재합니다: 제공자가 앱이 로드될 때 이를 지갑 부트스트랩(/waas/config)으로 보냅니다. 이는 클라이언트 측 SDK에서 예상되는 것입니다. 이 페이지는 정확히 그 키가 할 수 있는 것과 할 수 없는 것을 설명하고 이를 잠그는 방법을 설명합니다.
키가 할 수 있는 것과 할 수 없는 것
여기서 시작하십시오. 이것은 잘못 이해하기 쉬운 부분이기 때문입니다: Helius API 키는 RPC/크레딧 자격 증명이며 지갑 키가 아닙니다. 유출된 키는 다음과 같은 작업을 할 수 없습니다:- 거래 또는 메시지 서명,
- 자금 이동 또는 액세스, 또는
- 사용자의 임베디드 지갑에 접근.
노출은 청구 우회가 아닙니다. WaaS 서명은 API 키 계층이 아닌 임베디드 지갑이 서명하는 순간
측정됩니다. 유출된 키는 무료 서명을 생성하거나 타인의 사이트에서 서명을 청구할 수 없습니다.
측정은 키의 비밀 유지에 의존하지 않습니다.
잠금 설정
이러한 계층은 가장 낮은 노력에서 가장 강력한 경계까지 진행됩니다. 첫 번째는 필수적인 기본선입니다. 나머지는 위험 허용 범위에 따라 계층화합니다.1. 도메인으로 키 제한(필수)
귀하의 앱이 실행되는 출처에 키를 잠그어 번들에서 스크랩된 키가 다른 곳에서 쓸모없도록 만듭니다.1
RPC 접근 제어 열기
대시보드의 RPC 섹션에서 귀하의 키로 이동하여
접근 제어를 엽니다.
2
허용된 도메인에 귀하의 도메인 추가
앱이 제공되는 모든 출처를 추가합니다 — 프로덕션, 스테이징 및 미리 보기:
3
환경별 개별 키 사용
로컬, 스테이징 및 프로덕션에 대해 별도의 키를 유지하여 하나를 회전해도 다른
키에 영향이 가지 않도록 합니다.
도메인 허용 목록은 브라우저 기반의 오용을 중지시키지만, 결단력 있는 스크립트는 중지시키지 않습니다.
이 확인은 요청의
Origin/Referer 헤더를 읽습니다 — 브라우저는 이를
정직하게 설정하지만, 비브라우저 클라이언트(e.g. curl -H "Origin: yourdapp.com")는 이를 위조할 수 있습니다. 이것은 모든
클라이언트 측 API 키에 해당하는 사항입니다. Helius만이 아닙니다.
도메인 제한은 흔한 경우 — 키가 타인의 사이트에 나타나는 경우 — 를
신뢰성 있게 중지하지만, 위조할 수 없는 경계를 원한다면
IPs/CIDRs에 잠긴 서버 측 키를 사용하십시오 (4단계).2. 키 없는 보안 RPC URL(자동)
RPC 트래픽은 키를 전혀 포함하지 않습니다. SDK는 실행 시 프로젝트의 키 없는 보안 RPC URL을 해결하고 자동으로connection 호출에 사용합니다 — 구성할 필요가 없습니다.
이 URL에는 키가 없기 때문에 RPC 요청에서 추출할 것이 없으며, IP당 초당 5회로 제한됩니다 — 따라서 보호가 Origin 확인에 의존하지 않습니다. (유료 플랜에서 사용 가능; 프로젝트에 보안 RPC URL이 없으면 RPC는 3단계의 동일한 출처 경로 처리기로 돌아갑니다.)
3. 서버 측으로 키 이동 — 서버리스
브라우저에서 키를 숨기기 위해 RPC, 전송 및 거래 기록 호출을 보내려면, 이를 서버 측 비밀에서 키를 주입하는 자체 엔드포인트를 통해 라우팅하십시오. 이것은 또한 송신자 최적화 착륙 및 거래 기록에 참여하는 방법입니다. 모든 옵션은 100% 서버리스입니다 — 실행할 서버가 없습니다:-
Next.js 경로 처리기 — 서버리스 함수(Vercel, Netlify, Cloudflare)로 배포됩니다. 서버 환경에서
HELIUS_API_KEY을 읽습니다.app/api/helius/[...path]/route.ts -
Cloudflare Worker 프록시 — 가장 깨끗한 완전 서버리스 옵션: 키는 Worker 비밀에 있고 브라우저로 전달되지 않습니다.
Helius RPC 프록시
클릭 한 번으로 Cloudflare에 배포할 수 있는 오픈 소스 RPC 프록시입니다.
4. 위조할 수 없는 IP/CIDR 경계 추가
공격자가 위조할 수 없는 경계를 위해 서버 측 키를 백엔드의 IP 주소 또는 CIDR 범위에 잠그십시오.Origin 헤더와 달리 요청의 소스 IP는 정상 연결을 통해 위조될 수 없습니다 — 따라서 귀하의 서버가 아닌 다른 곳에서 온 curl은 즉시 거부됩니다.
이는 서버 측 키에만 적용됩니다 — 브라우저 키는 IP로 제한할 수 없습니다. 사용자가 예측할 수 없는 IP에서 연결되기 때문입니다. 깨끗한 패턴은 두 개의 키입니다.
서버리스 함수는 동적 egress IP를 가지므로, CIDR에 고정하려면
안정적인 egress가 필요합니다 — 전용 egress IP가 있는 Cloudflare Worker, Vercel 안전 컴퓨트,
또는 앞에 있는 고정 IP NAT. 그렇지 않으면 주요 이점을 얻을 수 있습니다
(키는 서버 측에 있고 결코 브라우저에 있지 않습니다); 그저 IP 경계를
추가하지 않는 것입니다.
계층 비교
어떤 계층을 선택하더라도, 이 중 어느 것도 사용자의 지갑 키가 아닙니다 — 그것들은 절대 사용되지 않습니다.
지갑 부트스트랩
경로 처리기 (프로덕션) 설정에서는 지갑 부트스트랩
(
/waas/config)도 서버 측
키와 함께 경로 처리기를 통해 진행됩니다. 따라서 Helius 키도 브라우저로 전달되지 않습니다.
프로토타입 설정에서는 브라우저가 부트스트랩을 위해 키를 보냅니다;
이를 도메인 제한하십시오 (1단계). 어떤 경우든 RPC 범위 내 키입니다 — 지갑이나
자금에 닿을 수 없습니다.체크리스트
배포 전에:- 클라이언트 키가 정확한 출처에 도메인 제한됨
- 로컬/스테이징/프로덕션에 대해 별도의 키
- 키가 환경 변수에서 읽혀지며, 절대로 하드코딩되지 않음
- (선택 사항) RPC, 전송, 기록이 서버리스 경로 처리기 또는 Cloudflare Worker를 통해 라우팅됨
- (선택 사항) 위조할 수 없는 경계를 위한 IP/CIDR에 잠긴 서버 측 키
다음 단계
키 보호
전체 접근 제어 참조: 도메인, IP, CIDR, 프록시.
구성
제공자 구성 및 대시보드 로그인 방법.