summaryrefslogtreecommitdiff
path: root/controller/Security.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/Security.php')
-rw-r--r--controller/Security.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/controller/Security.php b/controller/Security.php
index 39205c1..3475a8d 100644
--- a/controller/Security.php
+++ b/controller/Security.php
@@ -20,6 +20,50 @@ class Security
20 $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) 20 $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur)
21 return $chaine; 21 return $chaine;
22 } 22 }
23
24 public static function secureFileName(string $chaine): string
25 {
26 // sécuriser un nom avec chemin avec basename?
27 //$chaine = basename($chaine);
28
29 /*
30 - caractères interdits sous windows / \ : * ? " < > |
31 - mac autorise les /
32 - mac interdit :
33 - linux autorise tout sauf les /
34 - imagemagick ne supporte pas les :
35
36 - 'espace' fonctionne
37 - / remplacé par firefox en :
38 - \ retire ce qui est devant le \
39 - * fonctionne
40 - ? permet le téléchargement mais pas l'affichage
41 - " ne fonctionne pas, remplacé par %22, filtrer %22
42 - < > fonctionnent
43 - | fonctionne
44 - = fonctionne, mais je filtre parce qu'on en trouve dans une URL
45 - ' ` fonctionnent
46 - % fonctionne
47 - (){}[] fonctionnent
48 - ^ fonctionne
49 - # ne fonctionne pas
50 - ~ fonctionne
51 - & fonctionne
52 */
53
54 // => on remplace tout par des _
55 // filtrer / et \ semble inutile
56
57 $cibles = [' ', '/', '\\', ':', '*', '?', '<', '>', '|', '=', "'", '`', '"', '%22', '#'];
58 return(str_replace($cibles, '_', $chaine));
59
60 // les problèmes avec \ persistent !!
61 // => javascript
62 // malheureusement document.getElementById('upload').files[0].name = chaine; ne marche pas! interdit!
63 // solution?
64 // créer une copie du fichier et l'envoyer à la place
65 // envoyer le nom souhaité au serveur en AJAX puis renommer avec PHP
66 }
23} 67}
24 68
25// erreurs à la création des mots de passe 69// erreurs à la création des mots de passe