With the growing popularity of vibe coding, more people are now able to participate in service development.
However, over the past few months, I've discovered and reported vulnerabilities across more than five websites, leading to the exposure of over 10,000 pieces of personal information, such as email addresses. During this process, it became clear that many services are being released without sufficient understanding of personal data handling and security measures.
In particular, websites using Supabase frequently had improperly configured Row Level Security (RLS), significantly increasing the risk of personal data leakage.
I developed this extension to streamline my reporting of vulnerabilities and to help users easily identify secure websites, enabling safer use of individually developed services.
Supabase RLS Checker is a Chrome extension that automatically verifies Row Level Security (RLS) settings for Supabase databases used by websites. It detects tables with disabled RLS settings that should be protecting sensitive data and immediately notifies you of security risks.
-
Request Detection:
- Monitors browser communications in real-time, intercepting both Fetch API and XMLHttpRequest
- Identifies Supabase requests by detecting URL patterns containing
.supabase.co/rest/v1/
-
API Key Extraction:
- Extracts the
apikey
orAuthorization
header from request headers - Considers case variations in header names (apikey, Apikey, APIKey)
- Automatically removes the
Bearer
prefix in case of Bearer authentication
- Extracts the
-
RLS Verification Process:
- Uses the extracted API key to verify numerous types of sensitive tables
- Executes a
select * limit 30
query for each table - Determines that RLS protection is disabled if 30 or more records can be retrieved at once (properly configured RLS would restrict access to unauthorized data)
- Also verifies JWT token validity and expiration
-
Result Display:
- Warns about tables with disabled RLS settings in real-time
- Draws special attention to tables containing personal or sensitive data
- Automatic Detection: Automatically detects requests to Supabase and extracts API keys
- Comprehensive Checks: Checks numerous types of tables that may contain personal or confidential information
- Real-time Verification: Detects RLS configuration issues in real-time while browsing websites
- Security Alerts: Provides visual alerts for tables with disabled RLS settings
- JWT Verification: Automatically checks token validity and expiration
Search for "Supabase RLS Checker" in the Chrome Web Store<- Not yet published yet- Click the "Add to Chrome" button to install
- Clone or download this repository
- Install dependencies:
npm install
- Build the extension:
npm run build
- Open
chrome://extensions
in Chrome - Turn on "Developer mode" in the top right
- Click "Load unpacked extension" and select the
dist
folder
- After installation, the icon will appear in the Chrome toolbar
- When browsing websites that use Supabase, the extension automatically verifies RLS settings
- If tables with disabled RLS settings are detected, a warning notification will appear
- Click the notification to view detailed results
- Check the RLS status for each table
- Enable RLS settings for the affected tables in the Supabase dashboard
- Add necessary policies to set up appropriate access controls
The extension checks the RLS status for each table by executing a select * limit 30
query
See: https://github.com/hand-dot/supabase-rls-checker/blob/main/src/common/rlsChecker.ts
- Monitors communications by intercepting Fetch API and XMLHttpRequest
- Analyzes extracted JWT tokens to identify project references
- Checks token expiration and warns if expired
This extension checks the following numerous types of sensitive tables:
See: https://github.com/hand-dot/supabase-rls-check/blob/main/src/common/constants.ts
- This extension is recommended for development and testing purposes
- If used in production environments, use it carefully as part of security audits
- We recommend promptly fixing any detected RLS configuration issues
- False positives may occur if table names match common ones
- RLS may be intentionally disabled for certain tables
- Verify results and make judgments based on actual security requirements
- TypeScript
- React
- Chrome Extension API
- Supabase JavaScript Client
- JWT Decode
# Install dependencies
npm install
# Run in development mode (watches for file changes)
npm run dev
# Build for production
npm run build
MIT
Bug reports and feature requests are accepted through GitHub Issues. Pull requests are also welcome.