Changeset 101319 in spip-zone


Ignore:
Timestamp:
Dec 24, 2016, 12:04:14 AM (3 years ago)
Author:
maieul@…
Message:

Il arrive que le type mime envoyé par php soit insignifiant, par exemple
application/octet-stream pour un fichier .tex
Dans ce cas, il est plus pertinent pour la vérification de se baser sur
l'extension.
Avant ce commit, il n'était par exemple pas possible d'envoyer un
fichier .tex, puisque PHP le voyait comme application/octet-stream alors
que SPIP considère que .tex ->text/x-tex

Location:
_plugins_/verifier
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/verifier/paquet.xml

    r101242 r101319  
    22        prefix="verifier"
    33        categorie="outil"
    4         version="1.3.6"
     4        version="1.3.7"
    55        etat="stable"
    66        compatibilite="[2.0.10;3.1.*]"
  • _plugins_/verifier/plugin.xml

    r101242 r101319  
    1010        <icon>images/verifier-128.png</icon>
    1111        <licence>GPL v3</licence>
    12         <version>1.3.6</version>
     12        <version>1.3.7</version>
    1313        <etat>stable</etat>
    1414        <description>
  • _plugins_/verifier/verifier/fichiers.php

    r101238 r101319  
    116116**/
    117117function verifier_fichier_mime($valeur,$cle,$options){
    118         $extension = pathinfo($valeur['name'][$cle],PATHINFO_EXTENSION);
    119118        if ($options['mime'] == 'pas_de_verification') {
    120119                return '';
    121120        }
     121       
     122        $extension = pathinfo($valeur['name'][$cle],PATHINFO_EXTENSION);
     123       
     124        $mime_insignifiant = False;
     125        if (in_array($valeur['type'][$cle], array('text/plain', '', 'application/octet-stream'))) { // si mime-type insignifiant, on se base uniquement sur l'extension (comme par exemple dans recuperer_infos_distantes())
     126                $mime_insignifiant = True;
     127        }
    122128        if ($options['mime'] == 'specifique'){
    123                 if (!in_array($valeur['type'][$cle],$options['mime_specifique'])){
    124                         return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
    125                 }       
    126                 //Double sécurité, on vérifier aussi l'extension, pour éviter qu'autoriser une type mime application/octet-stream permette de balancer un .htaccess
    127                 $res = sql_select('mime_type','spip_types_documents','mime_type='.sql_quote($valeur['type'][$cle]).' and extension='.sql_quote($extension));
     129                if (!$mime_insignifiant) {
     130                        if (!in_array($valeur['type'][$cle],$options['mime_specifique'])){
     131                                return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
     132                        }
     133                }
     134                $res = sql_select('mime_type','spip_types_documents', sql_in('mime_type',$options['mime_specifique']).' and extension='.sql_quote($extension));
    128135                if (sql_count($res) == 0) {
    129136                        return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
    130137                }
    131138        } elseif ($options['mime'] == 'tout_mime') {
    132                 $res = sql_select('mime_type','spip_types_documents','mime_type='.sql_quote($valeur['type'][$cle]).' and extension='.sql_quote($extension));
     139                if (!$mime_insignifiant) {
     140                        $res = sql_select('mime_type','spip_types_documents','mime_type='.sql_quote($valeur['type'][$cle]).' and extension='.sql_quote($extension));
     141                } else {
     142                        $res = sql_select('mime_type','spip_types_documents','extension='.sql_quote($extension));
     143                }
    133144                if (sql_count($res) == 0) {
    134145                        return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
Note: See TracChangeset for help on using the changeset viewer.