Changeset 112964 in spip-zone


Ignore:
Timestamp:
Dec 19, 2018, 7:57:03 PM (3 months ago)
Author:
root
Message:

reporte des correctifs de sécurités concernant afficher_si sur la branche v1

Location:
_plugins_/saisies/branches/v1
Files:
3 edited

Legend:

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

    r86264 r112964  
    396396                if (isset($saisie['options']['afficher_si'])) {
    397397                        $condition = $saisie['options']['afficher_si'];
     398                        // Si tentative de log malicieux, on rejete
     399                        if (!saisies_verifier_securite_afficher_si($condition)) {
     400                                spip_log("Afficher_si malicieuse : $condition", "saisies"._LOG_CRITIQUE);
     401                                $condition = '$ok';
     402                        }
    398403                        // On gère le cas @plugin:non_plugin@
    399404                        preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
     
    427432}
    428433
    429 ?>
     434
     435/**
     436 * Vérifie qu'on tente pas de faire executer du code PHP en utilisant afficher_si.
     437 * N'importe quoi autorisé entre @@ et "" et ''
     438 * Liste de mot clé autorisé en dehors
     439 * @param string $condition
     440 * @return bool true si usage légitime, false si tentative d'execution de code PHP
     441 */
     442function saisies_verifier_securite_afficher_si($condition) {
     443        $autoriser_hors_guillemets = array("!", "IN", "\(", "\)", "=", "\s", "&&", "\|\|");
     444        $autoriser_hors_guillemets = "#(".implode($autoriser_hors_guillemets, "|").")#m";
     445
     446        $entre_guillemets = "#(?<guillemet>(^\\\)?(\"|'|@))(.*)(\k<guillemet>)#mU"; // trouver tout ce qu'il y entre guillemet, sauf si les guillemets sont échapés
     447        $condition = preg_replace($entre_guillemets, "", $condition);//Supprimer tout ce qu'il y a entre guillement
     448        $condition = preg_replace($autoriser_hors_guillemets, "", $condition);//Supprimer tout ce qui est autorisé hors guillemets
     449        if ($condition) {//S'il restre quelque chose, c'est pas normal
     450                return false;
     451        }
     452        //Sinon c'est que c'est bon
     453        return true;
     454}
  • _plugins_/saisies/branches/v1/paquet.xml

    r103864 r112964  
    22        prefix="saisies"
    33        categorie="outil"
    4         version="1.42.10"
     4        version="1.42.11"
    55        etat="stable"
    66        compatibilite="[2.0.0;3.0.*]"
  • _plugins_/saisies/branches/v1/plugin.xml

    r103720 r112964  
    99        <auteur>Matthieu Marcillaud - RastaPopoulos - Joseph</auteur>
    1010        <licence>&#169; 2009-2013 GNU/GPL</licence>
    11         <version>1.42.10</version>
     11        <version>1.42.11</version>
    1212        <etat>stable</etat>
    1313        <categorie>outil</categorie>
Note: See TracChangeset for help on using the changeset viewer.