Changeset 43683 in spip-zone


Ignore:
Timestamp:
Jan 20, 2011, 1:20:53 AM (9 years ago)
Author:
patfr@…
Message:

[new]Ecran de sécurité (1 fichier distant)

"L’écran de sécurité est un fichier PHP directement téléchargé sur le site officiel de SPIP, qui protège vos sites en bloquant certaines attaques liées à des trous de sécurité. Ce système permet de réagir très rapidement lorsqu’un problème est découvert, en colmatant le trou sans pour autant devoir mettre à niveau tout son site ni appliquer un « patch » complexe.
A savoir : l’écran verrouille certaines variables. Ainsi, par exemple, les variables nommées id_xxx sont toutes contrôlées comme étant obligatoirement des valeurs numériques entières, afin d’éviter toute injection de code SQL via ce genre de variable très courante. Certains plugins ne sont pas compatibles avec toutes les règles de l’écran, utilisant par exemple &id_x=new pour créer un objet x.
Outre la sécurité, cet écran a la capacité réglable de moduler les accès des robots d’indexation aux scripts php, de manière à leur dire de « revenir plus tard » lorsque le serveur est saturé."

2 réglages disponibles :

  • Activer l’écran de sécurité : oui/non
  • Régler la protection anti-robots quand la charge du serveur (load) excède la valeur XX

La valeur par défaut est 4. Mettre 0 pour désactiver ce processus.

De plus, cet outil :

  • indique les mises à jour disponibles de l'écran de sécurité et permet un téléchargement du fichier concerné en un clic
  • décèle un conflit avec un ecran_securite.php déjà présent dans le répertoire config/
Location:
_plugins_/couteau_suisse
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r43641 r43683  
    342342        'categorie' => 'admin',
    343343        'version-min' => '1.9300',
     344));
     345
     346add_variables( array(
     347        'nom' => 'ecran_actif',
     348        'check' => 'couteauprive:ecran_activer',
     349        'defaut' => 1,
     350        // code en realpath() pour config/mes_options.php
     351        'code:%s' => "if(!defined('_ECRAN_SECURITE') && @file_exists(\$f=\"".str_replace('\\','/',realpath(dirname(__FILE__)))."/lib/ecran_securite/distant_ecran_securite.php\")) include \$f;",
     352), array(
     353        'nom' => 'ecran_load',
     354        'format' => _format_NOMBRE,
     355        'defaut' => 4,
     356        'code:%s' => "define('_ECRAN_SECURITE_LOAD',%s);\n",
     357));
     358add_outil( array(
     359        'id' => 'ecran_securite',
     360        'code:spip_options' => '%%ecran_load%%%%ecran_actif%%',
     361        'categorie' => 'admin',
     362        'distant' => 'http://zone.spip.org/trac/spip-zone/browser/_core_/securite/ecran_securite.php?format=txt',
     363        'pipelinecode:pre_description_outil' => 'if($id=="ecran_securite") {
     364$conf=@file_exists(_DIR_RACINE.($f=_NOM_PERMANENTS_INACCESSIBLES."ecran_securite.php"))?"<hr/>\\n@puce@ <span style=\"color: red;\">"._T("couteauprive:ecran_conflit", array("file"=>$f))."</span>":"";
     365if(defined("_ECRAN_SECURITE")) {
     366        $vers=_ECRAN_SECURITE;
     367        include_spip("outils/maj_auto_action_rapide");
     368        $maj=maj_auto_rev_distante("http://zone.spip.org/trac/spip-zone/browser/_core_/securite/ecran_securite.php?format=txt",false,",(\\d+\\.\\d+(\\.\\d+)?),",0,true);
     369        if($maj{0}!="-")
     370                $tmp="\\n".(_ECRAN_SECURITE!=$maj?"- "._T("couteauprive:ecran_maj_ko", array("n"=>"<span style=\"color: red;\">$maj</span>")):_T("couteauprive:ecran_maj_ok"));
     371} else $vers=_T("couteauprive:ecran_ko");
     372if(!defined("_CS_SPIP_OPTIONS_OK")) $tmp.="\\n- "._T("couteauprive:detail_spip_options2");
     373$texte=str_replace(array("@_ECRAN_SECURITE@","@_ECRAN_CONFLIT@","@_ECRAN_SUITE@"),array($vers,$conf,$tmp),$texte);
     374}',
     375        'description' => "<:ecran_securite::>{{@_ECRAN_SECURITE@}}@_ECRAN_SUITE@",
    344376));
    345377
  • _plugins_/couteau_suisse/lang/couteauprive_fr.php

    r43258 r43683  
    99        '2pts_non' => '&nbsp;:&nbsp;non',
    1010        '2pts_oui' => '&nbsp;:&nbsp;oui',
     11        'ecran_ko' => 'Ecran inactif !',
     12        'ecran_activer' => 'Activer l\'&eacute;cran de s&eacute;curit&eacute;',
     13        'ecran_securite:description' => 'L\'&eacute;cran de s&eacute;curit&eacute; est un fichier PHP directement t&eacute;l&eacute;charg&eacute; sur le site officiel de SPIP, qui prot&egrave;ge vos sites en bloquant certaines attaques li&eacute;es &agrave; des trous de s&eacute;curit&eacute;. Ce syst&egrave;me permet de r&eacute;agir tr&egrave;s rapidement lorsqu\'un probl&egrave;me est d&eacute;couvert, en colmatant le trou sans pour autant devoir mettre &agrave; niveau tout son site ni appliquer un &laquo; patch &raquo; complexe.
     14
     15A savoir : l\'&eacute;cran verrouille certaines variables. Ainsi, par exemple, les  variables nomm&eacute;es <code>id_xxx</code> sont toutes  contr&ocirc;l&eacute;es comme &eacute;tant obligatoirement des valeurs num&eacute;riques enti&egrave;res, afin d\'&eacute;viter toute injection de code SQL via ce genre de variable tr&egrave;s courante. Certains plugins ne sont pas compatibles avec toutes les r&egrave;gles de l\'&eacute;cran, utilisant par exemple <code>&id_x=new</code> pour cr&eacute;er un objet {x}.
     16
     17Outre la s&eacute;curit&eacute;, cet &eacute;cran a la capacit&eacute; r&eacute;glable de moduler les acc&egrave;s des robots  d\'indexation aux scripts php, de mani&egrave;re &agrave; leur dire de &laquo;&nbsp;revenir plus tard&nbsp;&raquo;  lorsque le serveur est satur&eacute;.[[ %ecran_actif%]][[->
     18@puce@ R&eacute;gler la protection anti-robots quand la charge du serveur (load)  exc&egrave;de la valeur : %ecran_load%
     19_ {La valeur par d&eacute;faut est 4. Mettre 0 pour d&eacute;sactiver ce processus.}@_ECRAN_CONFLIT@]]
     20
     21En cas de mise &agrave; jour officielle, actualisez le fichier distant associ&eacute; (cliquez ci-dessus sur [actualiser]) afin de b&eacute;n&eacute;ficier de la protection la plus r&eacute;cente.
     22
     23- Version du fichier local : ',
     24        'ecran_securite:nom' => 'Ecran de s&eacute;curit&eacute;',
     25        'ecran_conflit' => 'Attention : le fichier &laquo;@file@&raquo; entre en conflit et doit &ecirc;tre supprim&eacute; !',
     26        'ecran_maj_ok' => '(semble &agrave; jour).',
     27        'ecran_maj_ko' => 'La version {{@n@}} de l\'&eacute;cran de s&eacute;curit&eacute; est disponible. Veuillez actualiser le fichier distant de cet outil.',
     28        'label:ecran_actif' => '@_CS_CHOIX@',
    1129
    1230        // S
     
    369387        'detail_raccourcis' => 'Voici la liste des raccourcis typographiques reconnus par cet outil.',
    370388        'detail_spip_options' => '{{Note}} : En cas de dysfonctionnement de cet outil, placez les options SPIP en amont gr&acirc;ce &agrave; l\'outil &laquo;@lien@&raquo;.',
     389        'detail_spip_options2' => 'Il est recommand&eacute; de placer les options SPIP en amont gr&acirc;ce &agrave; l\'outil &laquo;[.->cs_comportement]&raquo;.',
    371390        'detail_spip_options_ok' => '{{Note}} : Cet outil place actuellement des options SPIP en amont gr&acirc;ce &agrave; l\'outil &laquo;@lien@&raquo;.',
    372391        'detail_traitements' => 'Traitements :',
  • _plugins_/couteau_suisse/outils/maj_auto_action_rapide.php

    r43671 r43683  
    154154function maj_auto_rev_distante($url, $timeout=false, $pattern=NULL, $lastmodified=0, $force=false) {
    155155        $force |= in_array(_request('var_mode'), array('calcul', 'recalcul'));
    156 
    157156        // pour la version distante, on regarde toutes les 24h00 (meme en cas d'echec)
    158157        $maj_ = isset($GLOBALS['meta']['tweaks_maj_auto'])?unserialize($GLOBALS['meta']['tweaks_maj_auto']):array();
     
    163162                $distant = $maj[1];
    164163        elseif($timeout)
    165                 return -1;
     164                return '-1';
    166165        else {
    167166                $distant = $maj[1] = ($pattern!==NULL)
     
    173172                ecrire_meta('tweaks_maj_auto', serialize($maj_));
    174173                ecrire_metas();
    175         }               
    176         return intval($distant);
     174        }
     175        return $distant;
    177176}
    178177
     
    203202        $infos['url_origine'] = strlen($url_origine)?$url_origine._MAJ_LOG_FIN:'';
    204203        $infos['rev_local'] = abs($rev_local);
    205         $infos['rev_rss'] = maj_auto_rev_distante($infos['url_origine'], $timeout, ', \[(\d+)\],', $lastmodified);
     204        $infos['rev_rss'] = intval(maj_auto_rev_distante($infos['url_origine'], $timeout, ', \[(\d+)\],', $lastmodified));
    206205        $infos['maj_dispo'] = $infos['rev_rss']>0 && $infos['rev_local']>0 && $infos['rev_rss']>$infos['rev_local'];
    207206        // fichiers zip
     
    210209        if(strlen($p2)) {
    211210                // supposition du nom d'archive sur files.spip.org
    212                 if(maj_auto_rev_distante($f = _MAJ_ZIP.$p2.'.zip', $timeout)) $infos['zip_trac'] = $f;
     211                if(intval(maj_auto_rev_distante($f = _MAJ_ZIP.$p2.'.zip', $timeout))) $infos['zip_trac'] = $f;
    213212                // nom de l'archive recemment installee par chargeur
    214213                if(lire_fichier(sous_repertoire(_DIR_CACHE, 'chargeur').$p2.'/install.log', $log)
    215214                                && preg_match(',[\n\r]source: *([^\n\r]+),msi', $log, $regs)
    216                                 && maj_auto_rev_distante($regs[1], $timeout))
     215                                && intval(maj_auto_rev_distante($regs[1], $timeout)))
    217216                        $infos['zip_log'] = $regs[1];
    218217                // au final on prend le bon
  • _plugins_/couteau_suisse/plugin.xml

    r43671 r43683  
    22        <nom><multi>Swiss Knife[fr]Le Couteau Suisse[ca]El Ganivet Su&#237;s[ar]&#1587;&#1603;&#1610;&#1606; &#1575;&#1604;&#1580;&#1610;&#1576;[nl]Het Zwitserland Mes[gl]A navalla su&#237;za[es]La Navaja Suiza[de]Schweizer Taschenmesser[tr]&#304;svi&#231;re &#199;ak&#305;s&#305;[br]Ar Gontell Suis[pt_br]Canivete Su&#237;&#231;o[ast]La Navaya Suiza[gl]A navalla su&#237;za[ro]Cu&#355;itul Elve&#355;ian[it]Coltellino Svizzero</multi></nom>
    33        <icon>img/couteau-50.gif</icon>
    4         <version>1.8.32.01</version>
     4        <version>1.8.33.00</version>
    55        <version_base>1.0</version_base>
    66        <auteur>Patrice Vanneufville
Note: See TracChangeset for help on using the changeset viewer.