summaryrefslogtreecommitdiff
path: root/controller/Security.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/Security.php')
-rw-r--r--controller/Security.php30
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
5require('lib/htmlawed/htmLawed.php');
6
4class Security 7class 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
25function removeSpacesTabsCRLF(string $chaine): string 26function 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://
33function 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