diff --git a/CHANGELOG.md b/CHANGELOG.md index 4aaa091..fcdc309 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.7.1] - 2026-04-04 + +### Security +- Fix stored XSS across all pages - extract shared `esc()` utility (`public/utils/html.js`) and apply HTML escaping to all user-controlled data in innerHTML templates (titles, names, locations, descriptions, colors, notes content, autocomplete suggestions) +- Remove `user-scalable=no` and `maximum-scale=1` from viewport meta tag - restores pinch-to-zoom accessibility (WCAG 1.4.4) + +### Changed +- Deduplicate 8 identical `escHtml()` functions (tasks, shopping, calendar, notes, meals, contacts, budget, settings) into single shared `esc()` import from `utils/html.js` +- Shared `esc()` also escapes single quotes (`'` to `'`) for safer attribute contexts + ## [0.7.0] - 2026-04-04 ### Security diff --git a/package.json b/package.json index 954ef94..b061557 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oikos", - "version": "0.7.0", + "version": "0.7.1", "description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.", "main": "server/index.js", "type": "module", diff --git a/public/index.html b/public/index.html index d2ce741..bd46b6c 100644 --- a/public/index.html +++ b/public/index.html @@ -3,7 +3,7 @@
- + diff --git a/public/pages/budget.js b/public/pages/budget.js index 9ee9a26..7766f8c 100644 --- a/public/pages/budget.js +++ b/public/pages/budget.js @@ -9,6 +9,7 @@ import { api } from '/api.js'; import { openModal as openSharedModal, closeModal } from '/components/modal.js'; import { stagger, vibrate } from '/utils/ux.js'; import { t, formatDate, getLocale } from '/i18n.js'; +import { esc } from '/utils/html.js'; // -------------------------------------------------------- // Konstanten @@ -253,7 +254,7 @@ function renderCategoryBars(byCategory) { return `