Wheels 4.0 — 40+ security-hardening PRs, bucketed and linked #2486
bpamiri
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Security was one of the largest investments in the 4.0 cycle. This post summarizes what changed, grouped by theme. Every claim links to a merged PR in the full audit.
Themes
SQL injection
Every interpolation path into generated SQL was audited. The fixes:
$quoteValue— proper single-quote escaping (#2033).includein UPDATE — identifier validation (#2047).$indexHintnow validates (#2058).Path traversal
includePartial("../...")blocked (#2071).guideImageendpoint (#2037).Console / reload
consoleevalhardened — POST-only, robust IPv6, Content-Type checks (#2059).Defaults hardened (7 breaking changes)
trustProxy=false(#2024).last(#2088).allowEnvironmentSwitchViaUrlfalse in production (#2076).Additionally, RateLimiter now fails closed on lock timeout rather than open (#2069).
MCP endpoint
Used by AI coding assistants; tightened end-to-end:
db shell+deploy(#2040, #2068, #2073).Upgrade guidance
Each breaking change is covered in the upgrade guide with a consistent detect / fix / opt-out structure. The Legacy Compatibility Adapter provides a soft-landing path for staged migrations.
Question for the thread
If you run security audits of your stack, which of these categories would you most want to see expanded in 4.0.x point releases? The framework side is tightened; the gap is in documentation and in patterns for application-level security (auth, session storage, MFA).
Read the full post: https://blog.wheels.dev/posts/security-hardening-in-wheels-4/
Beta Was this translation helpful? Give feedback.
All reactions