v3.1.12
·
50 commits
to kitodo-publication-3x
since this release
Performance
- Reduce Fedora round trips for attachment requests: SLUB-INFO was fetched twice per request (access check + filename generation) — now fetched once and reused
- Cache SLUB-INFO and MODS datastreams in Redis DB 4 alongside existing METS cache (same TTL and config)
- Extend cache invalidation to cover
slub-info:{pid}andmods:{pid}keys on document update/delete - Add explicit 90s timeout to all internal Fedora
file_get_contents()calls - Switch
get_headers()calls to HEAD method to avoid discarding response body
Security
- Fix XPath injection in SLUB-INFO downloadable check:
$dsid(user-supplied attachment parameter) was interpolated directly into XPath query string, allowing bypass of per-file access control. Logic extracted toSlubInfoHelper::isDownloadable()with PHP-level string comparison instead - Add format validation for
qid(Fedora PID) andattachment(datastream ID) parameters at API entry point — rejects malformed input before any URL construction or cache key use - Use
hash_equals()fordeliverInactivesecret key comparison (timing-safe)