Changeset 112969 in spip-zone


Ignore:
Timestamp:
Dec 19, 2018, 8:09:03 PM (4 weeks ago)
Author:
root
Message:

on reporte la protection anticode malicieux sur la branche v2. COmme il y avait un version 2.27 (temporaire), on passe direczement à 2.28

Location:
_plugins_/saisies/branches/v2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/branches/v2/inc/saisies_afficher.php

    r111274 r112969  
    494494                if (isset($saisie['options']['afficher_si'])) {
    495495                        $condition = $saisie['options']['afficher_si'];
    496 
     496                        // Si tentative de code malicieux, on rejete
     497                        if (!saisies_verifier_securite_afficher_si($condition)) {
     498                                spip_log("Afficher_si malicieuse : $condition", "saisies"._LOG_CRITIQUE);
     499                                $condition = '$ok';
     500                        }
    497501                        // Est-ce uniquement au remplissage?
    498502                        if (isset($saisie['options']['afficher_si_remplissage_uniquement'])
     
    567571        return $saisies;
    568572}
     573
     574
     575/**
     576 * Vérifie qu'on tente pas de faire executer du code PHP en utilisant afficher_si.
     577 * N'importe quoi autorisé entre @@ et "" et ''
     578 * Liste de mot clé autorisé en dehors
     579 * @param string $condition
     580 * @return bool true si usage légitime, false si tentative d'execution de code PHP
     581 */
     582function saisies_verifier_securite_afficher_si($condition) {
     583        $autoriser_hors_guillemets = array("!", "IN", "\(", "\)", "=", "\s", "&&", "\|\|");
     584        $autoriser_hors_guillemets = "#(".implode($autoriser_hors_guillemets, "|").")#m";
     585
     586        $entre_guillemets = "#(?<guillemet>(^\\\)?(\"|'|@))(.*)(\k<guillemet>)#mU"; // trouver tout ce qu'il y entre guillemet, sauf si les guillemets sont échapés
     587        $condition = preg_replace($entre_guillemets, "", $condition);//Supprimer tout ce qu'il y a entre guillement
     588        $condition = preg_replace($autoriser_hors_guillemets, "", $condition);//Supprimer tout ce qui est autorisé hors guillemets
     589        if ($condition) {//S'il restre quelque chose, c'est pas normal
     590                return false;
     591        }
     592        //Sinon c'est que c'est bon
     593        return true;
     594}
  • _plugins_/saisies/branches/v2/paquet.xml

    r111401 r112969  
    22        prefix="saisies"
    33        categorie="outil"
    4         version="2.26.10"
     4        version="2.28.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.