We actively support the following versions of Smart Quiz System with security updates:
Version | Supported |
---|---|
1.0.x | ✅ Yes |
0.9.x | ❌ No |
< 0.9 | ❌ No |
We take the security of Smart Quiz System seriously. If you believe you have found a security vulnerability, please report it to us as described below.
Please do NOT report security vulnerabilities through public GitHub issues.
Instead, please report security vulnerabilities by emailing us at: security@smartquiz.com
Include the following information in your report:
- Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
- Full paths of source file(s) related to the manifestation of the issue
- The location of the affected source code (tag/branch/commit or direct URL)
- Any special configuration required to reproduce the issue
- Step-by-step instructions to reproduce the issue
- Proof-of-concept or exploit code (if possible)
- Impact of the issue, including how an attacker might exploit the issue
- We will acknowledge receipt of your vulnerability report within 2 business days
- We will provide an estimated timeframe for addressing the vulnerability within 5 business days
- We will notify you when the vulnerability has been fixed
- We will publicly disclose the vulnerability after a fix has been deployed (unless you request otherwise)
Currently, we do not offer a paid bug bounty program. However, we will publicly acknowledge your responsible disclosure (if you wish) and may offer Smart Quiz System swag as a token of appreciation.
If you're contributing to Smart Quiz System, please follow these security guidelines:
- Always validate user input on both client and server side
- Use Django's built-in form validation
- Sanitize HTML input using libraries like
bleach
- Validate file uploads and limit file types
- Never store passwords in plain text
- Use Django's built-in authentication when possible
- Implement proper session management
- Follow the principle of least privilege
- Use Django ORM to prevent SQL injection
- Never include sensitive data in version control
- Use parameterized queries for any raw SQL
- Implement proper database access controls
- Implement rate limiting on all endpoints
- Use HTTPS in production
- Validate all API inputs
- Implement proper error handling that doesn't leak information
# Use strong secret keys
SECRET_KEY=your-complex-secret-key-here
# Disable debug in production
DEBUG=False
# Configure allowed hosts
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com
# Use secure database connections
DATABASE_SSL_REQUIRE=True
# Django settings for production
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
- Keep all dependencies up to date
- Monitor for security advisories
- Apply security patches promptly
- Regular security audits
-
Cross-Site Scripting (XSS)
- All user input is escaped by default in Django templates
- TailwindCSS classes prevent most XSS vectors
- Content Security Policy headers implemented
-
Cross-Site Request Forgery (CSRF)
- Django CSRF protection enabled
- CSRF tokens required for all state-changing operations
- SameSite cookie attributes configured
-
SQL Injection
- Django ORM used exclusively for database operations
- No raw SQL queries without parameterization
- Database user has minimal required permissions
-
Authentication & Session Management
- JWT tokens with appropriate expiration
- Secure session cookie configuration
- Password hashing using PBKDF2
-
Rate Limiting
- Implement rate limiting on login attempts
- Add API rate limiting for quiz submissions
- Consider implementing CAPTCHA for repeated failures
-
File Upload Security
- Implement virus scanning for uploaded files
- Restrict file types and sizes
- Store uploads outside web root
-
Audit Logging
- Log all authentication attempts
- Log administrative actions
- Monitor for suspicious patterns
We recommend the following security testing practices:
# Security dependency check
safety check
# OWASP ZAP scanning
docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-stable zap-baseline.py -t http://localhost:8000
# Bandit security linter for Python
bandit -r backend/
- Authentication bypass attempts
- Authorization checks for all endpoints
- Input validation testing
- Session management testing
- HTTPS configuration verification
For any security-related questions or concerns, please contact:
- Security Team: security@smartquiz.com
- General Support: support@smartquiz.com
We would like to thank all security researchers who have contributed to making Smart Quiz System more secure through responsible disclosure.