Skip to content
Extraits de code Groupes Projets
Valider b1ef4beb rédigé par maieul@maieul.net's avatar maieul@maieul.net
Parcourir les fichiers

vérifier par type mime vérifier aussi l'extension. Évite qu'un type mime...

vérifier par type mime vérifier aussi l'extension. Évite qu'un type mime application/octet-stream autorisé serve à envoyer des .htaccess
parent 624fcddb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -99,9 +99,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( ...@@ -99,9 +99,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'option_fichiers_hauteur_max_label' => 'Hauteur maximum de l’image (en px)', 'option_fichiers_hauteur_max_label' => 'Hauteur maximum de l’image (en px)',
'option_fichiers_largeur_max_label' => 'Largeur maximum de l’image (en px)', 'option_fichiers_largeur_max_label' => 'Largeur maximum de l’image (en px)',
'option_fichiers_mime_image_web_label' => 'Image web (gif, jpg, png)', 'option_fichiers_mime_image_web_label' => 'Image web (gif, jpg, png)',
'option_fichiers_mime_label' => 'Type Mime', 'option_fichiers_mime_label' => 'Type Mime et extension',
'option_fichiers_mime_specifique_label' => 'Un type Mime précisé ci-dessous', 'option_fichiers_mime_pas_de_verification_label' => 'Pas de vérification du type Mime ni de l\'extension (déconseillé)',
'option_fichiers_mime_tout_mime_label' => 'Tous les types Mime autorisés par SPIP', 'option_fichiers_mime_specifique_label' => 'Un type Mime associé à une extension précisée ci-dessous',
'option_fichiers_mime_tout_mime_label' => 'Tous les types Mime et extensions autorisées par SPIP',
'option_fichiers_taille_max_label' => 'Poids maximum du fichier (en kio)', 'option_fichiers_taille_max_label' => 'Poids maximum du fichier (en kio)',
'option_fichiers_type_mime_label' => 'Cocher les types MIME autorisés', 'option_fichiers_type_mime_label' => 'Cocher les types MIME autorisés',
'option_id_objet_objet_label' => 'Nom de l’objet (au singulier)', 'option_id_objet_objet_label' => 'Nom de l’objet (au singulier)',
......
<paquet <paquet
prefix="verifier" prefix="verifier"
categorie="outil" categorie="outil"
version="1.3.3" version="1.3.4"
etat="stable" etat="stable"
compatibilite="[2.0.10;3.1.*]" compatibilite="[2.0.10;3.1.*]"
logo="images/verifier-128.png" logo="images/verifier-128.png"
...@@ -20,4 +20,5 @@ ...@@ -20,4 +20,5 @@
<pipeline nom="verifier" action="" /> <pipeline nom="verifier" action="" />
<utilise nom="yaml" /> <utilise nom="yaml" />
<utilise nom="cvtupload" version="[1.6.2;[" />
</paquet> </paquet>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<auteur>[Les Développements Durables->http://www.ldd.fr]</auteur> <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur>
<icon>images/verifier-128.png</icon> <icon>images/verifier-128.png</icon>
<licence>GPL v3</licence> <licence>GPL v3</licence>
<version>1.3.3</version> <version>1.3.4</version>
<etat>stable</etat> <etat>stable</etat>
<description> <description>
<multi> <multi>
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
</pipeline> </pipeline>
<necessite id="SPIP" version="[2.0.10;3.1.99]" /> <necessite id="SPIP" version="[2.0.10;3.1.99]" />
<utilise id="yaml" /> <utilise id="yaml" />
<utilise id="cvtupload" version="[1.6.2;[" />
<categorie>outil</categorie> <categorie>outil</categorie>
<traduire gestionnaire="salvatore" module="verifier" reference="fr" /> <traduire gestionnaire="salvatore" module="verifier" reference="fr" />
</plugin> </plugin>
...@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) { ...@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) {
* Si bool égal à true, cela signifie que le fichier avait déjà été vérifié, et qu'il est inutile de refaire la vérification. * Si bool égal à true, cela signifie que le fichier avait déjà été vérifié, et qu'il est inutile de refaire la vérification.
* @param array $options * @param array $options
* Options à vérifier : * Options à vérifier :
* - mime au choix 'image_web','tout_mime','specifique' * - mime au choix 'pas_de_verification', 'image_web','tout_mime','specifique'
* - mime_specifique (si l'option 'mime_specifique' est choisi ci-dessus) * - mime_specifique (si l'option 'mime_specifique' est choisi ci-dessus)
* - taille_max (en Kio) * - taille_max (en Kio)
* - dimension_max, tableau contenant les dimension max: * - dimension_max, tableau contenant les dimension max:
...@@ -115,12 +115,21 @@ function verifier_fichiers_dist($valeur, $options, &$erreurs_par_fichier) { ...@@ -115,12 +115,21 @@ function verifier_fichiers_dist($valeur, $options, &$erreurs_par_fichier) {
* @return string * @return string
**/ **/
function verifier_fichier_mime($valeur,$cle,$options){ function verifier_fichier_mime($valeur,$cle,$options){
$extension = pathinfo($valeur['name'][$cle],PATHINFO_EXTENSION);
if ($options['mime'] == 'pas_de_verification') {
return '';
}
if ($options['mime'] == 'specifique'){ if ($options['mime'] == 'specifique'){
if (!in_array($valeur['type'][$cle],$options['mime_specifique'])){ if (!in_array($valeur['type'][$cle],$options['mime_specifique'])){
return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle])); return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
} }
//Double sécurité, on vérifier aussi l'extension, pour éviter qu'autoriser une type mime application/octet-stream permette de balancer un .htaccess
$res = sql_select('mime_type','spip_types_documents','mime_type='.sql_quote($valeur['type'][$cle]).' and extension='.sql_quote($extension));
if (sql_count($res) == 0) {
return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
}
} elseif ($options['mime'] == 'tout_mime') { } elseif ($options['mime'] == 'tout_mime') {
$res = sql_select('mime_type','spip_types_documents','mime_type='.sql_quote($valeur['type'][$cle])); $res = sql_select('mime_type','spip_types_documents','mime_type='.sql_quote($valeur['type'][$cle]).' and extension='.sql_quote($extension));
if (sql_count($res) == 0) { if (sql_count($res) == 0) {
return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle])); return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
} }
......
...@@ -8,6 +8,7 @@ options: ...@@ -8,6 +8,7 @@ options:
nom: 'mime' nom: 'mime'
label: '<:verifier:option_fichiers_mime_label:>' label: '<:verifier:option_fichiers_mime_label:>'
datas: datas:
pas_de_verification: '<:verifier:option_fichiers_mime_pas_de_verification_label:>'
tout_mime: '<:verifier:option_fichiers_mime_tout_mime_label:>' tout_mime: '<:verifier:option_fichiers_mime_tout_mime_label:>'
image_web: '<:verifier:option_fichiers_mime_image_web_label:>' image_web: '<:verifier:option_fichiers_mime_image_web_label:>'
specifique: '<:verifier:option_fichiers_mime_specifique_label:>' specifique: '<:verifier:option_fichiers_mime_specifique_label:>'
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter