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 |
