| Version | Supported |
|---|---|
| 1.0.x | β |
| < 1.0 | β |
We take the security of StudentSathi seriously. If you discover a security vulnerability, please follow these steps:
DO NOT open a public issue for security vulnerabilities. Instead:
- Email: Send details to [[email protected]]
- Subject: Include "SECURITY" in the subject line
- Details: Provide:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
- Initial Response: Within 48 hours
- Status Update: Within 7 days
- Fix Timeline: Depends on severity
- Critical: 1-7 days
- High: 7-14 days
- Medium: 14-30 days
- Low: 30-90 days
When deploying StudentSathi:
- β
NEVER commit
.envfiles - β
Use strong, unique values for
JWT_SECRETandENCRYPTION_KEY - β Change default credentials in production
- β Use environment-specific variables
- β Use Supabase connection pooling
- β Enable Row Level Security (RLS) in Supabase
- β Use strong database passwords
- β Restrict database access by IP if possible
- β Regular backups
- β Enable HTTPS in production
- β Use HttpOnly cookies for tokens
- β Implement rate limiting
- β Use strong password policies
- β Enable 2FA for admin accounts (if implemented)
- β Validate all inputs
- β Use CORS properly
- β Implement rate limiting
- β Keep dependencies updated
- β Use Helmet.js for security headers
- β Use HTTPS/TLS certificates
- β Enable security headers
- β Keep Node.js and dependencies updated
- β Use environment variables for secrets
- β Implement logging and monitoring
- JWT-based authentication with refresh tokens
- Password hashing with bcrypt
- HttpOnly cookies for token storage
- Role-based access control (RBAC)
- SQL injection prevention via Prisma
- XSS protection
- CORS configuration
- Rate limiting
- Input validation with Zod
- Two-factor authentication (2FA)
- Session management improvements
- Advanced audit logging
- IP whitelisting
- API key rotation
- Security headers enhancement
Before deploying to production:
- All
.envfiles are in.gitignore - Strong, unique
JWT_SECRETset (min 32 characters) - Strong, unique
ENCRYPTION_KEYset (32 characters) - Database credentials are secure
- HTTPS is enabled
- CORS is properly configured
- Rate limiting is enabled
- Security headers are set
- Dependencies are up to date
- Backup strategy is in place
- Monitoring is enabled
- Error messages don't leak sensitive info
- Password Reset: Implement token expiration (currently set to 1 hour)
- Rate Limiting: Adjust limits based on your use case
- Session Management: Implement session revocation
- File Uploads: Validate and sanitize if implementing file uploads
- HTTPS: Required for production - sensitive data in transit
We appreciate security researchers who responsibly disclose vulnerabilities. Contributors will be acknowledged (with permission) in our security advisories.
Last Updated: December 31, 2025