headers.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. module.exports = {
  2. WEB_SECURITY_HEADERS: {
  3. "Strict-Transport-Security": " max-age=63072000",
  4. "X-Content-Type-Options": "nosniff",
  5. "X-Download-Options": "noopen",
  6. "X-Frame-Options": "deny",
  7. "X-XSS-Protection": "1; mode=block",
  8. "Referrer-Policy": "same-origin",
  9. },
  10. CSP_DIRECTIVES: {
  11. // self is safe enough
  12. "default-src": "'self'",
  13. // data to allow two factor qr code
  14. "img-src": "'self' blob: data: https://*.openstreetmap.org",
  15. "media-src": "'self' blob:",
  16. "manifest-src": "'self'",
  17. "style-src": "'self' 'unsafe-inline'",
  18. "font-src ": "'self'; script-src 'self' 'unsafe-eval' blob:",
  19. "connect-src":
  20. "'self' https://*.ente.io http://localhost:8080 data: blob: https://ente-prod-eu.s3.eu-central-003.backblazeb2.com https://ente-prod-v3.s3.eu-central-2.wasabisys.com/ https://ente-staging-eu.s3.eu-central-003.backblazeb2.com/ ws://localhost:3000/",
  21. "base-uri ": "'self'",
  22. // to allow worker
  23. "child-src": "'self' blob:",
  24. "object-src": "'none'",
  25. "frame-ancestors": " 'none'",
  26. "form-action": "'none'",
  27. "report-uri": " https://csp-reporter.ente.io/local",
  28. "report-to": " https://csp-reporter.ente.io/local",
  29. },
  30. ALL_ROUTES: "/(.*)",
  31. buildCSPHeader: (directives) => ({
  32. "Content-Security-Policy-Report-Only": Object.entries(
  33. directives,
  34. ).reduce((acc, [key, value]) => acc + `${key} ${value};`, ""),
  35. }),
  36. convertToNextHeaderFormat: (headers) =>
  37. Object.entries(headers).map(([key, value]) => ({ key, value })),
  38. };