Files
CompanySite/SECURITY-CHECKLIST.md
T
Clintchiz d402256547
Deploy to Production / Build & Verify (push) Failing after 5m56s
Ping Search Engines / Notify Search Engines (push) Successful in 2s
Deploy to Production / Pre-Deploy Tests (push) Has been skipped
Deploy to Production / Deploy to Railway (push) Has been skipped
Deploy to Production / Deploy to Render (push) Has been skipped
Deploy to Production / Deploy to VPS (PM2) (push) Has been skipped
Deploy to Production / Deploy to Fly.io (push) Has been skipped
Deploy to Production / Post-Deploy Verification (push) Has been skipped
Deploy to Production / Notify on Failure (push) Successful in 2s
E2E Test Suite / Critical User Journeys (push) Has been skipped
E2E Test Suite / API Integration Tests (push) Has been skipped
E2E Test Suite / Smoke Tests (P0) (push) Failing after 11m26s
E2E Test Suite / Form Interaction Tests (push) Failing after 11m42s
E2E Test Suite / Destructive & Chaos Tests (push) Failing after 12m2s
E2E Test Suite / Cross-Browser Regression (chromium) (push) Failing after 16m14s
E2E Test Suite / Cross-Browser Regression (webkit) (push) Failing after 17m45s
E2E Test Suite / Cross-Browser Regression (firefox) (push) Failing after 25m23s
E2E Test Suite / Security Header Tests (push) Failing after 7m55s
E2E Test Suite / Test Report Summary (push) Failing after 20s
E2E Test Suite / Mobile Device Tests (push) Failing after 2h49m9s
Uptime Monitor / Health & Response Time (push) Failing after 2s
Uptime Monitor / SSL Certificate (push) Successful in 2s
Uptime Monitor / Send Alerts (push) Failing after 3s
Uptime Monitor / Record Uptime Success (push) Has been skipped
First Init
2026-03-21 16:46:46 +05:30

329 lines
8.8 KiB
Markdown

# Security Checklist for WorkRoot IT Solutions
> Quick reference guide for security best practices and deployment checklist
---
## Pre-Deployment Security Checklist
### ✅ Domain Configuration
- [x] All references use `workroot.in` (not `workroot.com`)
- [x] Canonical URLs point to `https://workroot.in`
- [x] Sitemap uses correct domain
- [x] Structured data (JSON-LD) uses correct domain
- [x] Open Graph tags use correct domain
- [x] Domain validation in middleware
- [ ] DNS CAA record configured (optional)
- [ ] HSTS preload submitted (optional)
### ✅ Security Headers
- [x] Content-Security-Policy (CSP) configured
- [x] X-Frame-Options: DENY
- [x] X-Content-Type-Options: nosniff
- [x] Referrer-Policy: strict-origin-when-cross-origin
- [x] Permissions-Policy configured
- [x] Strict-Transport-Security (HSTS) for production
- [x] X-Permitted-Cross-Domain-Policies: none
- [x] X-DNS-Prefetch-Control: on
### ✅ HTTPS & Certificates
- [ ] Valid SSL/TLS certificate installed
- [ ] Certificate auto-renewal configured
- [ ] HSTS enabled (max-age=31536000)
- [ ] HTTP to HTTPS redirect configured
- [ ] Certificate covers www subdomain (if used)
### ✅ API Security
- [x] CORS headers configured for API endpoints
- [x] API endpoints use HTTPS only
- [x] Rate limiting implemented (if accepting POST requests)
- [ ] API authentication configured (if needed)
- [ ] Input validation on all endpoints (when backend added)
- [ ] Error messages don't leak sensitive info
### ✅ Dependencies
- [ ] `npm audit` run and vulnerabilities fixed
- [ ] Dependencies up to date (`npm outdated`)
- [ ] `package-lock.json` committed
- [ ] Automated dependency scanning enabled (Dependabot/Snyk)
- [ ] Regular security updates scheduled
### ✅ Environment Variables
- [x] `.env` file in `.gitignore`
- [x] No secrets in source code
- [x] `.env.example` provided (no sensitive values)
- [ ] Production environment variables set on hosting platform
- [ ] Secrets manager used for sensitive data (if needed)
### ✅ External Resources
- [x] CSP whitelists only trusted domains
- [x] External resources use `crossorigin` attribute
- [x] DNS prefetch/preconnect for external domains
- [ ] Subresource Integrity (SRI) for external scripts (if any)
- [ ] Self-hosting considered for critical resources
### ✅ Content Security
- [x] XSS prevention via Astro template escaping
- [ ] CSRF protection (when forms submit to backend)
- [ ] Input sanitization (when backend added)
- [ ] SQL injection prevention (N/A - no database)
- [ ] File upload validation (if implemented)
### ✅ Monitoring & Logging
- [ ] Security logging middleware enabled
- [ ] Error tracking configured (Sentry, etc.)
- [ ] Access logs monitored
- [ ] Anomaly detection configured
- [ ] Incident response plan documented
---
## Deployment Checklist
### Before Going Live
1. [ ] Run `npm run build` successfully
2. [ ] Run `npm audit` and fix vulnerabilities
3. [ ] Test security headers (see Testing section below)
4. [ ] Verify HTTPS certificate installed
5. [ ] Check all environment variables set
6. [ ] Review CORS configuration
7. [ ] Test contact form (when backend added)
8. [ ] Verify domain redirects (workroot.com → workroot.in if needed)
9. [ ] Run Playwright security tests: `npm run test`
10. [ ] Check CSP violations in browser console
### After Deployment
1. [ ] Test site at `https://workroot.in`
2. [ ] Verify security headers: `curl -I https://workroot.in`
3. [ ] Test with SecurityHeaders.com
4. [ ] Test with SSL Labs: https://www.ssllabs.com/ssltest/
5. [ ] Verify sitemap accessible: `https://workroot.in/sitemap.xml`
6. [ ] Test structured data with Google Rich Results Test
7. [ ] Monitor error logs for issues
8. [ ] Verify all API endpoints working
9. [ ] Test on multiple browsers/devices
10. [ ] Document any deployment-specific configurations
---
## Testing Security Headers
### Manual Testing
```bash
# Test security headers
curl -I https://workroot.in
# Test API endpoint
curl https://workroot.in/api/health.json
# Test sitemap
curl https://workroot.in/sitemap.xml
```
### Expected Headers
```
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; ...
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
```
### Automated Testing
```bash
# Run Playwright security tests
npm run test tests/security-headers.test.ts
# Run all tests
npm run test
```
### Online Security Scanners
1. **SecurityHeaders.com**
- URL: https://securityheaders.com/?q=https://workroot.in
- Expected: A+ grade
2. **SSL Labs**
- URL: https://www.ssllabs.com/ssltest/analyze.html?d=workroot.in
- Expected: A or A+ grade
3. **CSP Evaluator**
- URL: https://csp-evaluator.withgoogle.com/
- Paste CSP header from site
4. **Mozilla Observatory**
- URL: https://observatory.mozilla.org/
- Expected: A or A+ grade
---
## Regular Maintenance Tasks
### Weekly
- [ ] Monitor error logs
- [ ] Check for failed security events
- [ ] Review access patterns
### Monthly
- [ ] Run `npm audit`
- [ ] Update dependencies: `npm update`
- [ ] Review security logs
- [ ] Test security headers still present
- [ ] Check certificate expiry date
### Quarterly
- [ ] Full security audit
- [ ] Update SECURITY-AUDIT.md
- [ ] Review and update security policies
- [ ] Penetration testing (if applicable)
- [ ] Review incident response plan
- [ ] Update dependency versions
### Annually
- [ ] Comprehensive security review
- [ ] Update security documentation
- [ ] Review access controls
- [ ] Update SSL/TLS certificate (if not auto-renewing)
- [ ] Review OWASP Top 10 compliance
---
## Common Security Issues & Fixes
### Issue: CSP Violations in Console
**Solution**:
1. Open browser DevTools → Console
2. Identify blocked resource
3. If legitimate, add to CSP in `src/middleware.ts`:
```typescript
const csp = [
// Add new domain to appropriate directive
"img-src 'self' data: https: https://new-domain.com",
].join('; ');
```
4. Rebuild and redeploy
### Issue: Mixed Content Warnings
**Solution**:
1. Ensure all resources use HTTPS
2. Update any HTTP URLs to HTTPS
3. CSP `upgrade-insecure-requests` will auto-upgrade
4. Check external resources (images, fonts, scripts)
### Issue: CORS Errors on API
**Solution**:
1. Verify `Access-Control-Allow-Origin` header in API route
2. Check request origin matches allowed origin
3. For development, add localhost to allowed origins:
```typescript
const origin = isDevelopment ? '*' : 'https://workroot.in';
headers.set('Access-Control-Allow-Origin', origin);
```
### Issue: npm audit Vulnerabilities
**Solution**:
```bash
# Try automatic fix
npm audit fix
# If that doesn't work, fix manually
npm audit fix --force
# Or update specific package
npm update package-name
# Last resort: update to breaking changes
npm install package-name@latest
```
### Issue: Certificate Expiry
**Solution**:
1. Renew certificate before expiry (auto-renewal preferred)
2. Verify certificate includes all domains (including www)
3. Test after renewal: `curl -I https://workroot.in`
4. Check SSL Labs score
---
## Incident Response
### If Security Issue Detected
1. **Assess Severity**
- Critical: Data breach, site defacement
- High: Authentication bypass, XSS
- Medium: Information disclosure
- Low: Security header missing
2. **Immediate Actions**
- Document the issue
- Notify team lead
- If critical: Take site offline
- Block malicious IPs (if applicable)
- Preserve logs for investigation
3. **Investigation**
- Review access logs
- Check git history
- Identify attack vector
- Assess damage/exposure
4. **Remediation**
- Fix vulnerability
- Update dependencies
- Deploy patch
- Reset credentials (if compromised)
- Clear caches
5. **Post-Incident**
- Document findings
- Update security measures
- Notify affected users (if applicable)
- Review and improve processes
- Update this checklist
---
## Security Contacts
**Internal Security Lead**: [Your Name]
**Email**: security@workroot.in
**Incident Reporting**: Create issue at [GitHub repo]
**Emergency Contact**: [Phone number]
---
## Resources
### Documentation
- [SECURITY-AUDIT.md](./SECURITY-AUDIT.md) - Full security audit report
- [Astro Security Guide](https://docs.astro.build/en/guides/security/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
### Tools
- [npm audit](https://docs.npmjs.com/cli/v8/commands/npm-audit)
- [Snyk](https://snyk.io/) - Dependency scanning
- [Dependabot](https://github.com/dependabot) - Auto dependency updates
- [SecurityHeaders.com](https://securityheaders.com/)
- [SSL Labs](https://www.ssllabs.com/ssltest/)
### Security Standards
- OWASP Top 10 (2025)
- CWE Top 25
- MITRE ATT&CK Framework
- NIST Cybersecurity Framework
---
**Last Updated**: 2026-03-21
**Next Review**: 2026-06-21
**Version**: 1.0