|
|
@@ -1048,6 +1048,22 @@ with a `BOOTSTRAP_ADMIN` audit row.
|
|
|
unchanged. *New sprint* stays in the header as the one
|
|
|
quick-action admins reach for from any page.
|
|
|
|
|
|
+- [x] **R01-N15 — `noreferrer` added to external task URL link**
|
|
|
+ (`d16bff4`). The user-controlled task link in
|
|
|
+ `views/sprints/_task_list.twig` previously rendered with
|
|
|
+ `rel="noopener"` only — that blocks `window.opener` access but
|
|
|
+ still leaks the originating `/sprints/{id}` URL via the `Referer`
|
|
|
+ header to whatever URL an admin saved as `t.url`. Sprint IDs are
|
|
|
+ sequential integers, so a hostile `t.url` could confirm the
|
|
|
+ existence of internal sprints just by inspecting its access
|
|
|
+ logs. Switched to `rel="noopener noreferrer"`. The fix is
|
|
|
+ deliberately narrow: the `/sprints/{id}/present` anchor in
|
|
|
+ `views/sprints/show.twig` keeps `rel="noopener"` because it is
|
|
|
+ same-origin and the Referer leak the finding describes does not
|
|
|
+ apply (browsers send the same-origin Referer to the same origin
|
|
|
+ anyway). Pure twig edit; no test count change. Fourth fix from
|
|
|
+ `doc/REVIEW_01.md`.
|
|
|
+
|
|
|
- [x] **R01-N01 — Local-admin password is hash-only (no plaintext fallback)**
|
|
|
(`857df15`). `src/Auth/LocalAdmin.php` previously read the password
|
|
|
verbatim from `LOCAL_ADMIN_PASSWORD` and compared it with
|
|
|
@@ -1217,6 +1233,8 @@ before acting — nothing here is load-bearing once it grows stale.
|
|
|
## 13. Git history (as of this writing)
|
|
|
|
|
|
```
|
|
|
+d16bff4 Fix R01-N15: add noreferrer to external task URL link
|
|
|
+48a351c Docs: mark R01-N01 fixed, refresh SPEC §9 / §11 / §13
|
|
|
857df15 Fix R01-N01: hash-only LOCAL_ADMIN_PASSWORD_HASH (no plaintext fallback)
|
|
|
f075e12 Docs: mark R01-N04 fixed, refresh SPEC §9 / §13
|
|
|
296883c Fix R01-N04: drop unused SESSION_SECRET from env template + docs
|