diff options
Diffstat (limited to 'controller/Security.php')
-rw-r--r-- | controller/Security.php | 44 |
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 |