Roblox는 각 게임에 대해 비밀 저장소를 제공합니다. 비밀은 외부 서비스와 인증하는 데 사용하는 API 키, 비밀번호 및 액세스 토큰과 같은 민감한 정보입니다. 예를 들어, 타사 분석 또는 음악 서비스에 연결하려면 API 키를 사용하여 인증해야 할 수 있습니다.
API 키를 스크립트에 복사하여 붙여넣거나 데이터 저장소에 추가할 수 있지만, 이러한 접근 방식은 불필요한 보안 위험을 동반합니다. 더 나은 해결책은 비밀 저장소를 사용하고 소수의 안전한 방법을 통해 키에 접근하는 것입니다.
비밀 추가
비밀을 보거나 생성하거나 편집하려면 게임 소유자 또는 그룹 소유자여야 합니다. 게임당 최대 500개의 비밀을 가질 수 있습니다.
Creator Dashboard로 이동합니다.
게임을 선택한 다음 비밀 ⟩ 비밀 생성을 선택합니다.
이름, 비밀 및 해당 도메인을 입력합니다.
- 이름은 비밀의 고유 식별자로 작용하므로 설명적인 것을 추천합니다.
- 비밀은 최대 1,024자까지 가능합니다. API 키와 액세스 토큰은 서비스 제공업체에서 제공해야 하지만, 비밀이 비밀번호인 경우 직접 생성했을 가능성이 높습니다.
- 도메인에 대해 제한된 와일드카드 구문을 사용할 수 있습니다. 예를 들어, 모든 도메인에 대해 * (권장하지 않음) 또는 *.example.com을 사용하여 example.com의 모든 하위 도메인에 대해 사용할 수 있습니다. 특정 도메인이 더 좋습니다. 예: my.example.com.
로컬 비밀
보안상의 이유로 각 게임의 비밀 저장소는 라이브 서버 또는 협업 테스트 환경에서만 사용할 수 있습니다. 로컬 플레이테스트 중에 비밀에 접근하려고 하면 주어진 키로 비밀을 찾을 수 없습니다라는 오류가 발생합니다. 클라이언트 스크립트에서 비밀에 접근하려고 해도 동일한 오류가 발생합니다.
로컬 테스트를 위한 비밀을 지정하려면 Studio로 이동한 다음 파일 ⟩ 경험 설정 ⟩ 보안으로 이동합니다. 로컬 비밀 섹션에서 새 비밀을 생성하고 기존 비밀을 편집하거나 삭제할 수 있습니다.
비밀 사용
게임 내에서 비밀을 사용하기 전에 Studio의 파일 ⟩ 경험 설정 창의 HTTP 요청 허용을 활성화해야 합니다. 그런 다음 서버 스크립트 내에서 HttpService:GetSecret()을 호출합니다:
local HttpService = game:GetService("HttpService")
local testSecret = HttpService:GetSecret("test_secret")비밀 저장소를 사용하는 매력 중 하나는 비밀을 실수로 출력할 수 없다는 것입니다. 비밀 자체 대신, 다음 코드는 비밀을 생성할 때 제공한 이름을 출력합니다:
print(testSecret) --> Secret(test_secret)문자열을 직접 조작할 수 없습니다. 대신, Secret 데이터 유형을 사용하면 비밀에 접두사와 접미사를 추가하여 URL을 형성하거나 Bearer와 같은 내용을 삽입할 수 있습니다:
local HttpService = game:GetService("HttpService")
local testSecret = HttpService:GetSecret("test_secret")
local prefix = "https://my.example.com/endpoint?apiKey="
local suffix = "&user=username"
local url = testSecret:AddPrefix(prefix)
url = url:AddSuffix(suffix)
print(url) --> https://my.example.com/endpoint?apiKey=Secret(test_secret)&user=username비밀이 삽입된 URL을 얻은 후에는 HttpService:RequestAsync()와 같은 메서드를 사용하여 표준 HTTP 요청을 할 수 있습니다. 물론 이러한 메서드를 무시하고 비밀을 헤더에 직접 삽입할 수도 있습니다.