[ecrire ↪ feat_env_request] 19 commits

spip/ecrire | 19 commits

Par Cerdic, le 19 août 2026 à 20h55min :

feat: une balise #REQUEST_OU_ENV pour accéder au #ENV si fournit explicitement et sinon au #REQUEST

Modifié
public/balises.php
public/fonctions.php

Détails : feat: une balise #REQUEST_OU_ENV pour accéder au #ENV si fournit explicitement et sinon au #REQUEST (d4b7c91b) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 19 août 2026 à 20h49min :

refactor: utiliser une fonction nommee pour sanitizer le contexte

Modifié
inc/utils.php
public/assembler.php

Détails : refactor: utiliser une fonction nommee pour sanitizer le contexte (f2f7c17c) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 19 août 2026 à 20h10min :

fix: #REQUEST*{x} ne laisse jamais passer les scripts, quel que soit le réglage par défaut de SPIP
Seule #REQUEST**{x} laisse tout passer, à utiliser avec extrême prudence donc

Modifié
public/balises.php

Détails : fix: #REQUEST*{x} ne laisse jamais passer les scripts, quel que soit le réglage par défaut de SPIP (58f83c97) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 19 août 2026 à 15h43min :

fix: #REQUEST{x} renvoie null si x n’est fournie ni pas $_GET ni par $_POST

Permet de tester [(#REQUEST{x}|is_null|non)... faire un truc avec la valeur x envoyee]

Modifié
public/fonctions.php

Détails : fix: `#REQUEST{x}` renvoie null si x n'est fournie ni pas `$_GET` ni par `$_POST` (28da54d2) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 19 août 2026 à 14h58min :

feat: une balise #REQUEST pour accéder aux valeurs postées.
Pour une valeur envoyée en GET ou en POST

  • #REQUEST{x} n’est disponible que dans le squelette de premier niveau ou dans une inclusion avec {env} sinon elle renverra du vide
  • #REQUEST{x} renvoie la valeur avec entites filtrées (< en <, & en &…)
  • #REQUEST*{x} renvoie la valeur brute (mais qui passe dans interdire_scripts)
  • #REQUEST**{x} renvoie la valeur brute sans aucune sécurité

Dans tous les cas #ENV{x} renverra une valeur sanitizée et ne permettra jamais d’avoir la valeur envoyée intacte.
Si on ne s’attends pas à avoir du html dans la variable envoyée, alors il est bien de continuer à utiliser #ENV{x} pour ne pas prendre de risque.

Modifié
public/balises.php
public/fonctions.php

Détails : feat: une balise #REQUEST pour accéder aux valeurs postées. (f7b2e9e6) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 19 août 2026 à 14h58min :

fix: les __request sont stockées dans $Pile[request] et transmises lors des inclusions qui ont un {env}

Modifié
public/balises.php
public/compiler.php

Détails : fix: les __request sont stockées dans $Pile[request] et transmises lors des... (5cffbe8f) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 19 août 2026 à 14h55min :

refactor: calcul du contexte, sanitizer tout ce qui va dans ENV

Quand on calcule le contexte, les valeurs qui seront dans #ENV sont sanitizées pour ne jamais avoir de valeur malicieuse dans #ENV (y compris les clés des tableaux)
Les valeurs brutes sont urlencodees et stockées dans une cle __request pour être lue via une balise #REQUEST dédiée

Refs: Connexion · GitLab

refactor: calcul du contexte

Modifié
public/assembler.php

Détails : refactor: calcul du contexte, sanitizer tout ce qui va dans `ENV` (115be7f0) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 19 août 2026 à 14h55min :

refactor: spip_sanitize_value_recursive peut optionnellement sanitizer les clés

Modifié
inc/utils.php

Détails : refactor: spip_sanitize_value_recursive peut optionnellement sanitizer les clés (6bf79237) · Validations · spip / ecrire · GitLab

==============================
Par marcimat, le 18 août 2026 à 16h37min :

Merge branch ‹ refactor_attribut_url › into ‹ 4.4 ›

refactor: simplifier et déplacer attribut_url()

See merge request spip/ecrire!299

Modifié
inc/filtres.php
inc/filtres_mini.php
inc/headers.php

Détails : https://git.spip.net/spip/ecrire/-/commit/2fd5a8eaddcd6a2beae9d624fa54d1408224a522

==============================
Par Cerdic, le 18 août 2026 à 16h12min :

refactor: déplacer attribut_url dans inc/filtres_mini

Modifié
inc/filtres.php
inc/filtres_mini.php
inc/headers.php

Détails : https://git.spip.net/spip/ecrire/-/commit/3737820265d2568b76732a2fe7c5d352a00d5ab3

==============================
Par Cerdic, le 18 août 2026 à 16h12min :

refactor: ne pas utiliser entites_html() dans attribut_url()

On a pas de balises html dans les URLs, donc pas nécessaire de faire echappe_retour(echappe_html()) ni d’inclure inc/texte.php

Modifié
inc/filtres.php

Détails : https://git.spip.net/spip/ecrire/-/commit/6ea0f71b8ae4c6f8ebe3a063c005921a63355a3c

==============================
Par Matthieu Marcillaud, le 18 août 2026 à 16h11min :

fix: compléter safe_export_env() pour traiter aussi les clés de tableaux

Refs: !312
(cherry picked from commit 1e287cd1caa75c0df0f09b296f55f8bd52354b7b)

Modifié
public/fonctions.php

Détails : fix: compléter `safe_export_env()` pour traiter aussi les clés de tableaux (3adb9778) · Validations · spip / ecrire · GitLab

==============================
Par marcimat, le 18 août 2026 à 15h54min :

Merge branch ‹ fix_strftime_deprecated › into ‹ 4.4 ›

fix: utiliser date() pour émuler DATE_FORMAT en sqlite

See merge request spip/ecrire!318

Modifié
req/sqlite_fonctions.php

Détails : Merge branch 'fix_strftime_deprecated' into '4.4' (fdadd06e) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 18 août 2026 à 15h52min :

fix: utiliser date() pour émuler DATE_FORMAT() en sqlite

strftime() est déprécié depuis PHP 8.1

Refs: spip/spip#5802

Modifié
req/sqlite_fonctions.php

Détails : fix: utiliser `date()` pour émuler `DATE_FORMAT()` en sqlite (a6c9d3be) · Validations · spip / ecrire · GitLab

==============================
Par marcimat, le 18 août 2026 à 15h39min :

Merge branch ‹ fix_media_5040 › into ‹ 4.4 ›

fix: faire fonctionner « titre REGEXP ‹ ^$ › » en sqlite

See merge request spip/ecrire!319

Modifié
req/sqlite_fonctions.php

Détails : Merge branch 'fix_media_5040' into '4.4' (4f8e073b) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 18 août 2026 à 15h39min :

fix: faire fonctionner « titre REGEXP ‹ ^$ › » en sqlite

Pour des raisons de perf, le cas champ vide est optimisé lors de la traduction de REGEXP en preg_match, mais dans certain cas cela est une erreur
On teste spécifiquement la regepxp ‹ ^$ › qui sert à trouver les champs vides

Refs: médiathèque + sqlite : filtre "sans titre" ne fonctionne pas (#5040) · Issues · spip / medias · GitLab

Modifié
req/sqlite_fonctions.php

Détails : fix: faire fonctionner "titre REGEXP '^$'" en sqlite (9878c394) · Validations · spip / ecrire · GitLab

==============================
Par marcimat, le 18 août 2026 à 15h34min :

Merge branch ‹ fix_issue_167 › into ‹ 4.4 ›

Ne pas capturer des headers en dehors de cas prévus

See merge request spip/ecrire!317

Modifié
public/composer.php

Détails : Merge branch 'fix_issue_167' into '4.4' (7281abd1) · Validations · spip / ecrire · GitLab

==============================
Par Cerdic, le 18 août 2026 à 15h30min :

fix: Ne pas capturer des headers en dehors de cas prévus (issus de labalise HTTP_HEADER notamment)

Le modificateur m était en trop

On veut vraiment que la preg match l’ensemble du code, et pas juste une ligne

Fix: #167

Modifié
public/composer.php

Détails : fix: Ne pas capturer des headers en dehors de cas prévus (issus de labalise HTTP_HEADER notamment) (36b9847a) · Validations · spip / ecrire · GitLab

==============================
Par Matthieu Marcillaud, le 18 août 2026 à 15h29min :

fix: Autoriser la création du password d’un nouvel auteur

Refs: #165
(cherry picked from commit 3061db9604e9706c5e1d7aab77b09a5f41abadaf)

Modifié
action/inscrire_auteur.php

Détails : fix: Autoriser la création du password d’un nouvel auteur (b2543633) · Validations · spip / ecrire · GitLab