diff options
Diffstat (limited to 'controller/Security.php')
-rw-r--r-- | controller/Security.php | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/controller/Security.php b/controller/Security.php index 15c44b2..ac1149e 100644 --- a/controller/Security.php +++ b/controller/Security.php | |||
@@ -1,6 +1,9 @@ | |||
1 | <?php | 1 | <?php |
2 | // controller/Security.php | 2 | // controller/Security.php |
3 | 3 | ||
4 | // sécurité faille XSS avec htmLawed | ||
5 | require('lib/htmlawed/htmLawed.php'); | ||
6 | |||
4 | class Security | 7 | class Security |
5 | { | 8 | { |
6 | private static $configHtmLawed = array( | 9 | private static $configHtmLawed = array( |
@@ -13,17 +16,38 @@ class Security | |||
13 | 16 | ||
14 | public static function secureString(string $chaine): string | 17 | public static function secureString(string $chaine): string |
15 | { | 18 | { |
16 | // sécurité faille XSS avec htmLawed | ||
17 | require('lib/htmlawed/htmLawed.php'); | ||
18 | |||
19 | $chaine = htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed); | 19 | $chaine = htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed); |
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 | } | 23 | } |
24 | 24 | ||
25 | // erreurs à la création des mots de passe | ||
25 | function removeSpacesTabsCRLF(string $chaine): string | 26 | function removeSpacesTabsCRLF(string $chaine): string |
26 | { | 27 | { |
27 | $cibles = [' ', "\t", "\n", "\r"]; // doubles quotes !! | 28 | $cibles = [' ', "\t", "\n", "\r"]; // doubles quotes !! |
28 | return(str_replace($cibles, '', $chaine)); | 29 | return(str_replace($cibles, '', $chaine)); |
29 | } | 30 | } |
31 | |||
32 | // lien sans http:// | ||
33 | function fixLinks($data) | ||
34 | { | ||
35 | // si une adresse est de type "domaine.fr" sans le http:// devant, le comportement des navigateurs est de rechercher un fichier comme si mon adresse commençait par file:// | ||
36 | // tomber ainsi sur une page d'erreur est parfaitement déroutant | ||
37 | // une erreur 404 est détectée et le visiteur redirigé, mais ça ne règle pas le problème | ||
38 | |||
39 | // regex pour détecter les balises <a> et ajouter http:// au début des liens si nécessaire | ||
40 | $pattern = '#(<a.*href=")((?!https?://).*)(".*>)#'; | ||
41 | $remplacement = '$1http://$2$3'; | ||
42 | // le "while" est ici parce que preg_replace s'arrête après avec trouvé et modifié un pattern, pourquoi?? | ||
43 | while(preg_match($pattern, $data)) | ||
44 | { | ||
45 | $data = preg_replace($pattern, $remplacement, $data); | ||
46 | } | ||
47 | |||
48 | // 2ème problème, en train d'écrire un article, l'utilisateur clique sur ce lien qu'il vient de créer et qui apparaît dans l'infobulle, un nouvelle onglet apparaît | ||
49 | // solution: fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; | ||
50 | // comment déclencher le JS? en faisant qu'une erreur 404 causée pour cette raison soit particulière? | ||
51 | |||
52 | return($data); | ||
53 | } \ No newline at end of file | ||