-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Deprecate GraphQL Playground that exposes master key in HTTP response #10110
Copy link
Copy link
Closed
Labels
state:breakingBreaking change requires major version increment and `BREAKING CHANGE` commit messageBreaking change requires major version increment and `BREAKING CHANGE` commit messagestate:releasedReleased as stable versionReleased as stable versionstate:released-alphaReleased as alpha versionReleased as alpha versiontype:featureNew feature or improvement of existing featureNew feature or improvement of existing feature
Metadata
Metadata
Assignees
Labels
state:breakingBreaking change requires major version increment and `BREAKING CHANGE` commit messageBreaking change requires major version increment and `BREAKING CHANGE` commit messagestate:releasedReleased as stable versionReleased as stable versionstate:released-alphaReleased as alpha versionReleased as alpha versiontype:featureNew feature or improvement of existing featureNew feature or improvement of existing feature
Problem
The GraphQL Playground endpoint (
mountPlayground: true) embeds the master key as a plaintext string literal in the HTML response:Anyone who can reach the
/playgroundURL gets the master key — no authentication required. While documented as a dev-only feature, this is a fundamentally problematic pattern: an unauthenticated HTTP endpoint that serves the most privileged credential in cleartext HTML.Context
The built-in playground was introduced when GraphQL was newer and standalone tools were less mature (~2019-2020). Shipping a built-in explorer with pre-configured credentials lowered the onboarding barrier. The landscape has since changed — standalone GraphQL tools are now mature, widely available, and free. The only value the server-side playground still adds over them is auto-configured credentials, which is exactly the part that's problematic.
Parse Dashboard already ships its own GraphQL console (embedded GraphiQL) with proper authentication and does not use the Parse Server
/playgroundendpoint. Removing the playground has zero impact on Parse Dashboard.Proposal
Deprecate and remove the GraphQL Playground feature.
Recommended alternatives:
The key distinction: a developer pasting their master key into a local tool's header config is fundamentally different from the server broadcasting it over HTTP to anyone who requests a URL.
Steps
mountPlaygroundandplaygroundPathoptions as deprecated