screentinker/server/routes
ScreenTinker afbe113acf Security audit remediation: auth, IDOR, XSS, hardening
- Device WebSocket authentication: devices get a device_token on
  registration, must present it on reconnect. All WS events require
  prior auth. Timing-safe token comparison.
- IDOR fixes: ownership checks on schedules (device, week), layouts
  (all CRUD, zones, duplicate, device assign), video-walls (content,
  device-config).
- XSS prevention: shared esc() helper in utils.js, fixed 13 innerHTML
  injection points across 9 frontend files.
- OAuth hardening: no longer silently overwrites auth_provider on
  accounts with local passwords (returns 409).
- JWT pinned to HS256 for sign and verify.
- Password policy: change endpoint now requires 8 chars (was 6).
- HSTS header enabled (max-age 1 year, includeSubDomains).
- Stripe webhook rejects unsigned payloads when no secret configured.
- Screenshot size validation (max 2MB base64).
- Rate limiting on exports, imports, content operations.
- Content file serving checks playlist_items instead of old assignments.
- Content ownership verified in device-groups assign-content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 22:48:07 -05:00
..
activity.js Initial open source release 2026-04-08 12:14:53 -05:00
assignments.js Phase 2: assignments.js operates on device playlists instead of assignments table 2026-04-11 22:05:19 -05:00
auth.js Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00
content.js Instant playlist push, fix YouTube looping, auto-fetch video titles 2026-04-08 15:42:41 -05:00
device-groups.js Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00
devices.js Phase 2: devices.js returns playlist items instead of assignments 2026-04-11 22:05:48 -05:00
kiosk.js Initial open source release 2026-04-08 12:14:53 -05:00
layouts.js Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00
playlists.js Phase 2: playlists API returns display_count, is_auto_generated + assign endpoint 2026-04-11 22:09:32 -05:00
provisioning.js Initial open source release 2026-04-08 12:14:53 -05:00
reports.js Initial open source release 2026-04-08 12:14:53 -05:00
schedules.js Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00
status.js Probe video durations during migration and v1 import 2026-04-11 22:24:56 -05:00
stripe.js Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00
subscription.js Initial open source release 2026-04-08 12:14:53 -05:00
teams.js Initial open source release 2026-04-08 12:14:53 -05:00
video-walls.js Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00
white-label.js Initial open source release 2026-04-08 12:14:53 -05:00
widgets.js Fix widget assignments, designer scaling, and cache strategy 2026-04-08 16:25:05 -05:00