Repository navigation
Release v2.14.0
v2.14.0
Changelog
Security: CSRF action forms (CsrfOnlyType, HiddenFieldsCsrfType, CsrfOnlyFormFactory, csrf_action_form) fail closed without the form CSRF extension. See UPGRADING.
Security
- CSRF action forms fail closed:
CsrfOnlyTypeandHiddenFieldsCsrfType(and thereforeCsrfOnlyFormFactoryand thecsrf_action_form()Twig function) now throw aLogicExceptionwhen the form is built without Symfony's form CSRF extension (form.type_extension.csrf:symfony/security-csrfmissing,framework.csrf_protection: falseorframework.form.csrf_protection: false). Before, both types declared their owncsrf_protection/csrf_token_iddefaults, so a directcreateForm(CsrfOnlyType::class, …)rendered no token andisValid()accepted any cross-site POST (the factory only failed by accident, with anUndefinedOptionsExceptiononcsrf_field_name). An explicitcsrf_protection: falseremains the caller's opt-out. NewNowo\FormKitBundle\Form\CsrfProtectionGuard; see UPGRADING and SECURITY.
Added
- Developer tooling:
make release-checknow runscheck-no-raw-html-form(REQ-TWIG-005) after the Twigextragate; the check allowlists only the two form-theme files (form/_locale_tabs.html.twig, demonowo_special_fields_form_theme.html.twig).
Changed
- Demo:
translations,kit_api_patterns,multistepand the shared_form_sections_looppartial render the form body through the rendered-aware child loop ({% for child in form %}+not child.rendered+form_row(child)) instead of field-by-field rows /form_rest/ an unguarded loop; same fields, names and layout (REQ-TWIG-003 / REQ-TWIG-005). - Docs: USAGE section "Rendering forms in Twig" states the Symfony Form / child-loop rule and that hosts and demos must not reintroduce raw
<form>/<input>(REQ-TWIG-005 rule 9).
What's Changed
- chore(deps): bump nowo-tech/ui-kit-bundle from 2.5.3 to 2.7.0 by @dependabot[bot] in #49
- chore(deps): bump nowo-tech/phpstan-frankenphp from 1.3.0 to 1.3.2 by @dependabot[bot] in #50
- fix(security): CSRF action forms fail closed without the form CSRF extension by @HecFranco in #51
Full Changelog: v2.13.3...v2.14.0