Commit Graph
5615 Commits
Author SHA1 Message Date
Dan Brown c813c1b362 Meta: Updated translator list 2026-07-30 02:42:46 +01:00
Dan Brown de6e6f3dd9 Deps: Updated PHP package versions 2026-07-29 09:56:08 +01:00
Dan Brown 1a1d724892 Merge branch 'sec_jul26' into development 2026-07-29 09:49:41 +01:00
Dan Brown 652ce53720 Merge pull request 'New Crowdin translations by GitHub Action' (#6175) from l10n_development into development
Reviewed-on: https://codeberg.org/bookstack/bookstack/pulls/6175
2026-07-29 10:48:44 +02:00
Crowdin Bot 17398590d3 New Crowdin translations by GitHub Action 2026-07-29 04:31:29 +00:00
Dan Brown a0108ae0ea Maintenance: Fixed test issues from recent changes 2026-07-28 15:19:20 +01:00
Dan Brown badc4f9b8e Gallery API: Aligned image querying
Updated endpoint image querying to generally follow the same logic to
ensure filtering on just the expected types which are intended to be
managed by this endpoint, and it err on the side of caution in terms of
access control.
2026-07-28 14:29:36 +01:00
Dan Brown 5ed685d1e6 Image API: Update delete permission check
Aligns with ImageController permissions by checking related item view
access only if that still exists.

Thanks to Tanner Marks for reporting.
2026-07-28 13:35:42 +01:00
Dan Brown 2183fc7fc8 API: Limited exception details shown
Updated exception handler to reduce the amount of detail shown to
prevent potentially sensitive details (like internal paths) being shown
in the error message.

Added an interface for specifically marking exceptions whos messages we
may want to show.

Thanks to Tanner Marks for reporting.
2026-07-28 13:27:42 +01:00
Dan Brown 1732f15e4c External Auth: Updated user external auth id matching to be stricter
Added tests to cover.
Thanks to whale120 for reporting.
2026-07-27 21:23:47 +01:00
Dan Brown cb195999eb Content Filter: Updated srcset and URI handling
- Added more complex srcset parsing and URI handling via custom built
  HTMLPurifier filter, which I've also provided upstream.
- Added a custom URI filter to force require URI schemes.
2026-07-27 12:12:07 +01:00
Dan Brown 0ada5d2dc9 Login: Added extra timing defenses for failed login attempts
- Adds a dummy hash attempt to balance the time of unknown user login
  attempt with known user login attempt to help prevent timing being
  used to indicate existing accounts.
- Adds some random variance to failed login attempts to help prevent
  timing based information discovery.

Thanks to Tanner Marks for their responsible disclosure of this.
2026-07-24 14:38:54 +01:00
Dan Brown 4e406c41c4 Attachments: Aligned update form permission checks with other actions
Thanks to Ashutosh Jena(MAVERICK-VF142) for reporting.
Not considered a significant security issue since it already required
page update permissions, which would generally be considered higher
privileged than the added page view.
2026-07-23 20:57:48 +01:00
Mesar Hameed 9a242ca449 Views: Added translatable aria-labels for role permission checkboxes
Role permission checkboxes (shelves, books, chapters, pages, revisions,
images, attachments) used short labels like 'Own' and 'All' for their
aria-labels. Screen readers would announce these without any context
about what resource or action the permission applies to.

Added 'role_permission_aria' translation key with the pattern
':action :resource: :value' and updated all permission row templates
to use trans() with parameters. This gives translators full control
over word order and separators while providing screen readers with
descriptive labels like 'Create books: All'.
2026-07-16 07:01:31 +00:00
Mesar Hameed 16e60b3939 Views: Added aria-labels to custom checkbox components for screen readers
The custom checkbox components (custom-checkbox.blade.php and
toggle-switch.blade.php) use a <span role="checkbox"> as the
visual/interactive element while hiding the native <input type="checkbox">
with display:none. The span had no accessible name, so screen readers
would announce "checkbox" without any label context.

Added aria-label to the role="checkbox" span in both templates.
Also added optional  parameter to custom-checkbox that
falls back to  when not provided, allowing callers to supply
a more descriptive accessible name.
2026-07-16 07:01:06 +00:00
Fabrizio Volonté f0f5b62c9d Audit Log: Applied display timezone to dates
Uses the shared date formatter for audit log activity dates so APP_DISPLAY_TIMEZONE is respected while APP_TIMEZONE can remain UTC for storage.

Related to issue #4786 and PR #5790, which introduced APP_DISPLAY_TIMEZONE and updated most in-app absolute date displays but left the audit log table rendering the raw created_at value.
2026-07-13 15:42:09 +02:00
Dan Brown 6107161275 URLs: Fixed issue in comparisons when elements missing 2026-07-02 10:21:01 +01:00
Dan Brown ad283ef0ed Updated packages, translators and licensing pre v26.05.2 2026-07-02 09:41:17 +01:00
Dan Brown b87789dde6 Merge branch 'sec_jun26' into development 2026-07-02 09:38:17 +01:00
Dan Brown a213175004 Merge pull request 'Updated translations with latest crowdin changes' (#6166) from l10n_development into development
Reviewed-on: https://codeberg.org/bookstack/bookstack/pulls/6166
2026-07-02 10:36:35 +02:00
Crowdin Bot b6e3d304fe New Crowdin translations by GitHub Action 2026-07-02 08:34:05 +00:00
Dan Brown 6bba39196c Merge pull request 'Added Serbian language to language_select array' (#6153) from PolarniMeda/bookstack:development into development
Reviewed-on: https://codeberg.org/bookstack/bookstack/pulls/6153
2026-07-02 10:32:48 +02:00
Dan Brown caeea658d1 Access: Hardened usage of referring URLs via login
Adds a more substantial URL check, via a new class which is shared and
used in other parts of the app for consistency.

Thanks to mfk25 for reporting.
2026-07-01 10:45:59 +01:00
Dan Brown fe39b69c1f Comments: Added visibility check to comment delete
Aligns it with other actions/endpoints, and ensures an extra layer of
control against malicious use.

Thanks to mfk25 for reporting.
2026-07-01 10:20:32 +01:00
Dan Brown 01dc1e71c5 Attachments: Added more extensive URL filtering
Added a central URLFilter class to check & clean URLs used for
attachments, which is also used for validation, and by the purifier to
standardise protocols (and to make protocol config easier in future).

Thanks to mfk25 for reporting.
2026-07-01 00:41:19 +01:00
Dan Brown 59bbf504cf Content filtering: Added srcset protocol filter
Upstream libraries used did not specifically treat values in srcset as
URIs like other attributes, so this adds a simple filter for possible
bad values.
Updated tests to cover.

Thanks for Gurmandeep Deol for reporting.
2026-06-30 18:35:34 +01:00
Dan Brown f7df78b91b CI: Attempted to fix snyk workflow 2026-06-24 13:58:20 +01:00
Dan Brown c511f7d935 CI: Added workflow to sync with snyk 2026-06-24 13:48:20 +01:00
Dan Brown 79a2e017bb Maintenance: Fixed type and CI issues
- Fixed issues picked up by PHPStan updates.
  - Not sure why it was flagging the BookSorter issue, but swapping if
    statements made it go away.
- Updated BookSortMapItem with modern syntax.
- Attempted to fix CI issues by adding DOM extension.
- Attempted to make migration CI more efficient via tmpfs
2026-06-11 14:24:09 +01:00
PolarniMeda dad83d473d Added Serbian language to language_select array 2026-06-11 10:32:03 +02:00
Dan Brown c74df7e06b Updated translator & dependency attribution before release v26.05.1 2026-06-09 12:50:16 +01:00
Dan Brown 6b545d600c Merge branch 'v26051_sec' into development 2026-06-09 12:48:39 +01:00
Dan Brown cc0b059fa4 Deps: Updated PHP package versions 2026-06-09 12:47:28 +01:00
Crowdin Bot 9fc46f76f6 New Crowdin translations by GitHub Action 2026-06-08 04:30:58 +00:00
Dan Brown 84a23fb23f Logs: Prevented NotifyExceptions for reporting to error logs
This is to reduce the amount of content which will be logged, since
these messages don't really indicate an actual system error but advise
the user of something which went wrong with their request.
2026-06-07 11:25:51 +01:00
Dan Brown b7325fdf0e Attachments: Moved perm checks before validation
Avoids providing responses with potential sensitive attachment info
before permission checks.
Added tests to cover.

Thanks to Rafael Castilho for reporting.
2026-06-07 10:35:14 +01:00
Dan Brown 81f77a95de Content Filtering: Limited file protocol to just anchor hrefs
Updated allow list/purifier system to only allow file protocol use on
anchor hrefs to avoid potential security concerns with, after export,
content being auto loaded via interactive elements like
embeds/objects/videos etc...

Updated tests to cover.
Thanks to Gurmandeep Deol at Seneca Polytechnic for reporting.
2026-06-06 15:30:57 +01:00
Dan Brown 37f2d05118 Search: Prevented tag search using unusable numbers
These would trigger an error on use, and could be abused to fill logs.
Added test to cover.

Thanks to Stephen O. / Sakusen for reporting.
2026-06-06 10:37:06 +01:00
Dan Brown fa3b7f77b9 Maintenance: Addressed all phpstan level 5 issues 2026-05-31 15:42:54 +01:00
Dan Brown 03c9ddd14f Maintenance: Further PHPStan level 5 type fixes 2026-05-31 11:12:23 +01:00
Dan Brown 5611c8c0da Maintenance: Started work on PHPStan Level 5 2026-05-30 21:44:25 +01:00
Dan Brown f01bb749ab Workflows: Attempted fixing crowdin files
Currently causing extra files to be created alongside previous files in
crowdin
2026-05-30 13:45:25 +01:00
Dan Brown d421a19193 Updated translator & dependency attribution before release v26.05 2026-05-28 12:32:17 +01:00
Dan Brown 67529dd883 Deps: Updated PHP packages, fixed some types for phpstan 2026-05-28 10:34:04 +01:00
Dan BrownandCrowdin Bot c26b66887f Updated translations with changes from Crowdin (#6139)
## Details

<!-- Write details of your pull request in here -->
<!-- Include references to any relevant issues/discussions -->

## Checklist

<!-- Put an 'x' in between the brackets below to confirm these elements -->

- [ ] I have read the [BookStack community rules](https://www.bookstackapp.com/about/community-rules/).
- [ ] This PR does not feature significant use of LLM/AI generation as per the community rules above.

Co-authored-by: Crowdin Bot <[email protected]>
Reviewed-on: https://codeberg.org/bookstack/bookstack/pulls/6139
2026-05-28 11:29:39 +02:00
Dan Brown 17b76bb876 Merge pull request 'Page Editor Contents List View' (#6131) from page_editor_contents into development
Reviewed-on: https://codeberg.org/bookstack/bookstack/pulls/6131
2026-05-26 14:54:13 +02:00
Dan Brown 0de1196b62 Page Editor: Minor fixes
- Removed unused import
- Added some trailing newlines to code files
- Prevented <hr>s confusing logic in MD editor
- Aligned logic to select end of header across editors
2026-05-26 13:28:40 +01:00
Dan Brown 99e405f80f Page Editor: Added contents click handling for TinyMCE editor 2026-05-26 12:58:48 +01:00
Dan Brown d7ba0dc430 CSP: Renamed CSS CSP option 2026-05-26 12:50:19 +01:00
Dan Brown 2c49502345 Merge pull request 'Merge Further v26.03 changes' (#6133) from v26-03 into development
Reviewed-on: https://codeberg.org/bookstack/bookstack/pulls/6133
2026-05-25 17:26:29 +02:00