diff --git a/docs/AUDIT_REDESIGN.md b/docs/AUDIT_REDESIGN.md index 6fc942f..0f7b3f9 100644 --- a/docs/AUDIT_REDESIGN.md +++ b/docs/AUDIT_REDESIGN.md @@ -45,7 +45,7 @@ Status: โฌœ open ยท ๐ŸŸฆ in PR ยท โœ… fixed (commit hash on the right). | C2 | No FMP response cache. Free tier = 250 req/day. Every Home view load = 3 req. 80 page loads/day โ†’ quota burnt by lunch. | ๐ŸŸ  | โœ… | 0828007 | | C3 | `/api/screener` passes `sector` query through to FMP without an allow-list. Low-impact injection, but should validate. | ๐ŸŸก | โœ… | c173aeb | | C4 | `/api/news` passes `symbols` through to Alpaca without validation. | ๐ŸŸก | โœ… | 7c4b08c | -| C5 | Header `fetchMarketIndices` polls every 60 s even when the tab is hidden. Should pause via `document.visibilityState`. | ๐ŸŸก | โฌœ | | +| C5 | Header `fetchMarketIndices` polls every 60 s even when the tab is hidden. Should pause via `document.visibilityState`. | ๐ŸŸก | โœ… | e089832 | | C6 | `backend/.env.example` keeps `FMP_API_KEY=demo` AND `apiServer.ts` falls back to `'demo'`. Two sources of truth. Demo key is shared globally and rate-limited. | ๐ŸŸก | โฌœ | | | C7 | FMP `apikey` is sent as a query string โ†’ leaks into proxy / CDN logs. FMP doesn't support headers, so the only mitigation is server-side caching (see C2). | ๐ŸŸก | โฌœ | |