summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controller/Security.php30
-rw-r--r--controller/ckeditor.php29
-rw-r--r--controller/media.php1
-rw-r--r--public/css/accueil.css2
-rw-r--r--public/main.js8
-rw-r--r--view/courriel.php2
-rw-r--r--à faire après livraison.txt8
7 files changed, 35 insertions, 45 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
diff --git a/controller/ckeditor.php b/controller/ckeditor.php
index d6ea8ad..43fd2e2 100644
--- a/controller/ckeditor.php
+++ b/controller/ckeditor.php
@@ -142,32 +142,3 @@ function submitCKeditor()
142 header('Location: index.php?page=' . $_GET['page']); 142 header('Location: index.php?page=' . $_GET['page']);
143 exit(); 143 exit();
144} 144}
145
146
147// lien sans http://
148// 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://
149// tomber ainsi sur une page d'erreur est parfaitement déroutant
150// une erreur 404 est détectée et le visiteur redirigé, mais ça ne règle pas le problème
151// 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
152// solution: fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>';
153// le .htaccess doit pour ça détecter que l'erreur 404 est particulière
154
155function fixLinks($data)
156{
157 // regex pour détecter les balises <a>, analyser les liens à l'interieur et les modifier si nécessaire
158 $pattern = '#<a href=".*">.*</a>#';
159
160 if(preg_match($pattern, $data))
161 {}
162
163 //$remplacement = 'http://$0';
164 //$data = preg_replace($pattern, $remplacement, $data);
165
166 // contrairement à ce qui dit la doc
167 // https://www.php.net/manual/fr/filter.filters.validate.php
168 // une adresse du type "domaine.fr" ne passe pas le filtre
169 // il renvoie false, ce qui nous arrange ici!
170 //var_dump(filter_var($link, FILTER_VALIDATE_URL));
171
172 return($data);
173}
diff --git a/controller/media.php b/controller/media.php
index c6682df..27a8bb3 100644
--- a/controller/media.php
+++ b/controller/media.php
@@ -48,7 +48,6 @@ function mediaSubmit($chaine)
48 // c'est du complètement calqué sur le javascript, avec une syntaxe PHP 48 // c'est du complètement calqué sur le javascript, avec une syntaxe PHP
49 // et en plus elle est super vieille, elle ne connaît pas les balises HTML5 ! 49 // et en plus elle est super vieille, elle ne connaît pas les balises HTML5 !
50 // mais une balise c'est une balise donc ça marche quand même 50 // mais une balise c'est une balise donc ça marche quand même
51 // la doc de PHP est comme toujours plutôt bonne, elle indique les types de données manipulées
52 // https://www.php.net/manual/fr/book.dom.php 51 // https://www.php.net/manual/fr/book.dom.php
53 $dom = new DOMDocument; 52 $dom = new DOMDocument;
54 53
diff --git a/public/css/accueil.css b/public/css/accueil.css
index 7d75e11..344f601 100644
--- a/public/css/accueil.css
+++ b/public/css/accueil.css
@@ -274,7 +274,7 @@ footer
274 274
275 /* compensation des cibles de liens # 275 /* compensation des cibles de liens #
276 superposées au "nav" hors flux */ 276 superposées au "nav" hors flux */
277 :target 277 .articleSansEditeur:target
278 { 278 {
279 padding-top: 70px; 279 padding-top: 70px;
280 margin-top: -70px; 280 margin-top: -70px;
diff --git a/public/main.js b/public/main.js
index b6021d6..5ca23c7 100644
--- a/public/main.js
+++ b/public/main.js
@@ -16,11 +16,10 @@ function deconnexionAutomatique()
16 // sauvegarde de la rédaction en cours avec le plugin "autosave" de l'éditeur 16 // sauvegarde de la rédaction en cours avec le plugin "autosave" de l'éditeur
17} 17}
18 18
19// fonction appelée avec onClick dans un lien, 19function confirmerSuppression() // appel 'onCLick'
20// si JS est activé, on ne suit le lien qu'avec un "oui"
21// si JS est désactivé, le lien fonctionne
22function confirmerSuppression()
23{ 20{
21 // avec JS, on ne suit le lien qu'avec un "oui"
22 // sans JS, le lien fonctionne
24 var oui = confirm('Confirmer la suppression de cet article.'); 23 var oui = confirm('Confirmer la suppression de cet article.');
25 if(!oui) 24 if(!oui)
26 { 25 {
@@ -78,6 +77,7 @@ function copierAdresse()
78} 77}
79 78
80// cacher le lien #nouvelArticle quand le ckeditor est appelé 79// cacher le lien #nouvelArticle quand le ckeditor est appelé
80// hum pourquoi faire déjà?
81// function cacherLienArticle() 81// function cacherLienArticle()
82// { 82// {
83// var cible = document.getElementById('nouvelArticle'); 83// var cible = document.getElementById('nouvelArticle');
diff --git a/view/courriel.php b/view/courriel.php
index 3d401fb..7dd7ba4 100644
--- a/view/courriel.php
+++ b/view/courriel.php
@@ -1,5 +1,5 @@
1 <div id="courriel" > 1 <div id="courriel" >
2 <button ><a href="index.php?page=<?= $page ?>" >Haut de la page</a></button> 2 <button ><a href="#bloc_page" >Haut de la page</a></button>
3 <div> 3 <div>
4 <img src="public/timbre.png" alt="" ><br />Envoyez-moi un courriel à: <img src="public/courriel.png" > 4 <img src="public/timbre.png" alt="" ><br />Envoyez-moi un courriel à: <img src="public/courriel.png" >
5 </div> 5 </div>
diff --git a/à faire après livraison.txt b/à faire après livraison.txt
index b8de449..faf0131 100644
--- a/à faire après livraison.txt
+++ b/à faire après livraison.txt
@@ -2,15 +2,11 @@ rassembler les pages
2presse (fille qui tombe) dans melaine 2presse (fille qui tombe) dans melaine
3ateliers (cheval) dans archives (blonde) 3ateliers (cheval) dans archives (blonde)
4remplacer concerts (sirene) par "écouter" 4remplacer concerts (sirene) par "écouter"
5une page mentions légales (dans fille qui tombe ou cheval) 5remplacer liens (fille qui tombe) par "mentions légales"
6
7liens sans http dans l'éditeur
8 6
9dans installation.php, utiliser la racine dans config.php pour adapter le .htaccess (si c'est possible) 7dans installation.php, utiliser la racine dans config.php pour adapter le .htaccess (si c'est possible)
10 8
11réduire les droits des dossiers 9réduire les droits des dossiers?
12
13bouton pour remonter: remplacer le lien par du JS pour ne pas recharger la page
14 10
15captcha dans password.php? 11captcha dans password.php?
16 12