1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
dans Image::makeThumbnail(), garder le sens (rotation) de l'image
pour réussir le test w3c:
- ne pas inclure de <a> et de <input> l'une dans l'autre
- les balises <section> sont censées être suivies d'un titre <h2>, <h3>, etc
tester filtre caractère ^
améliorer Image::makeThumbnail() pour que gd gère toutes les extensions
bug probable si upload d'image bmp ou tiff
pages albums: montrer la pochette à côté du titre
problème lorsque deux images ont le même nom
problème lorsqu'on télécharge la même image en tant que pochette d'un album et dans le HTML, cause: les dimensions des deux miniatures crées sont censées être différents, hors l'une écrase l'autre
protéger les e-mails de la page infos légales
avec JS peut-être, comme l'adresse de melaine?
renommer les fichiers melaineDATA et melainePHP en melainefavennec.comDATA, etc
gérer les \ dans les noms de fichiers (ou pas, c'est dur à faire et ça ne casse rien)
écrire Security::fixLinks()
barre de progression au téléchargement d'un melaineDATA
-> permettra de savoir aussi si la limite de 30s d'un script PHP a une importance
empêcher de monter ou descendre à nouveau un élément en rechargeant la page
-> solution 1: rediriger vers la même page sans action dans l'url après le déplacement
-> solution 2: déplacement AJAX avec javascript
ne remplace pas la solution 1 qui doit toujours fonctionner
gérer le cas où l'éditeur est ouvert et qu'on clique sur un bouton monter ou descendre
-> solution 1: cacher les boutons (et bloquer la fonctionnalité!)
-> solution 2: changement de position en JS ET version non JS en enregistrant le contenu en cours dans 'data/tmp'
(c'est lourd, mais on évite de dérouter l'utilisateur)
trouver une solution au problème du cache du visiteur (surtout Melaine) lorsque le site est mis à jour
Actualité: remplacer le mot "actualité" (page menu) par un logo sur le côté du genre panneau Attention!
rendre le menu chronologie moins moche
variable de session avec vérification du captcha
images d'en-tête svg?
trouver mieux que la police "comic sans MS" dans les images de BD
quand un article ou album est ajouté, le mentionner pendant une semaine dans la section actualité de la page menu
images des articles en grand et miniature, Zoom sur images (articles)
affichage avec javascript OU au moins dans une "page" dotée d'un bouton pour sortir (avec GD? avec imagemagick?)
galerie en css (ou/et en javascript) pour les peintures de bateau
https://www.guyom-design.com/blog/astuces/css/tuto_diapo_css/
Explorateur de fichiers pour les images
page musique avec vidéos embarquées
n'utiliser que les grandes images dans le menu
déconnexion automatique quand inactivité
dans installation.php, utiliser la racine dans config.php pour adapter le .htaccess (si c'est possible)
réduire les droits des dossiers?
sauvegardes automatiques (pas très utile, je le fais dès que je modifie quelque chose et c'est pas souvent)
remplacer le survol par un clic sur les smartphones
fignoler l'affichage petits écrans
penser aux grands écrans (en l'état, on a 700 pixels de large au maximum)
ajouter d'autres format de sauvegarde (il parait que zip se fait vieux)
Identification avec deux codes (login + mot de passe)
pagination (système d'onglets), par exemple: 10 articles max par page
à voir selon le volume
pagination avec AJAX pour ne pas recharger la page tout le temps
plugin autosave de l'éditeur
Editeur "inline" ou "balloon block"
défense aux attaques par force brute quand l'attaquant multiplie les connexions au site
-> limiter le nombre de connexions simultanées, exemple 3
-> une fonction "déconnecter tous les appareils"
Protection contre les falsifications de requête inter-site - CSRF
connexion avec un jeton
ici une explication simple avec un exemple simpliste
(les GET servent à la navigation, les POST à l'action)
https://www.ibm.com/docs/fr/order-management?topic=ssgtjf-com-ibm-help-sfs-cpqsolution-doc-customization-c-wcc-crosssiterequestforgery-html
notre site est-il concerné? le navigateur peut toujours enregistrer les identifiants (cookie ou pas), la session sur le serveur sera donc maintenue
protection: on ajoute un formulaire caché avec une valeur aléatoire cryptée utilisable une seule fois (=jeton)
"Vous pouvez rendre chaque jeton utilisable une seule fois et ainsi éviter de rejouer plusieurs fois la même requête.
Les jetons sont stockés dans le back-office.
Une rotation des jetons est effectuée quand le nombre maximum a été atteint, les plus vieux en premier.
Chaque jeton peut être lié à une URL spécifique.
Si un jeton est intercepté, il ne peut pas être utilisé dans un autre contexte.
Si besoin, les jetons peuvent être attachés à une adresse IP spécifique.
Depuis la version v2.1, les jetons peuvent être réutilisés (par exemple pour les requêtes AJAX).
Si vous n’utilisez pas un framework qui gère la protection CSRF pour vous, jetez un oeil à Anti-CSRF."
une bibli qui fait ça: https://github.com/paragonie/anti-csrf
"sessions, penser aux attaques CSRF (cross-site request forgery):
ça consite à faire qu'un utilisateur connecté avec une session envoie malgré lui une requête GET ou POST qu'un hacker aura cachée par exemple dans une fausse image clicable
- solution: faire qu'un GET seul dans une session ne suffise pas à effectuer une action (les GET ne doivent servir qu'à afficher la bonne page), une attaque sur un POST est possible aussi mais plus difficile et nécessite d'injecter du javascript
- on peut demander à l'utilisateur une vérification supplémentaire avant chaque action, mais c'est plutôt chiant
- il y a la méthode des jetons, "nonces" et horodatage
- vérifier le "référent", c'est à dire l'URL de la page d'où vient normallement la requête"
infos: https://fr.wikipedia.org/wiki/Cross-site_request_forgery
Upload de musique/vidéo
Ajout de liens youtube, spotify, etc
Version avec base de données
Site bilingue (nécessite la base de données)
Editeur tout AJAX (pas juste les images)
|