J'ai ajouté une section commentaires.
Javascript ta mère
Il faudrait que je me décide à rassembler les infos glânées sur Polymer et mes impressions, qui sont bien entendu loin d'être 97% positives. J'ai des vieilles notes qui ressemblent plus à rien avec des TODO partout parce que depuis mon introduction à la librairie les choses ont pas mal (entendez complètement) changé (NB: depuis 2018 ce blog n'a plus rien à voir avec Polymer).
Déjà faire du web dev de base c'était l'enfer pour moi, impossible à rendre de manière identique sur tous les browsers, trop besoin de <table> puis maintenant il faut quelque chose qui rende bien sur plusieurs formats d'écran, donc euh... Y a Bootstrap mais si tu veux étendre deux ou trois trucs il faut créer des media queries en CSS puis je suis une semi-quiche en CSS déjà de base.
Overlow, float, clear, display: block, display: cock, ... C'est quoi tous ces trucs? Je peux pas mettre deux gifs animés dans un tableau, un marquee comme titre et une iframe centrale qui change quand on clique sur un lien?
Comme si c'était déjà pas suffisant, il faut absolument passer par la case Javascript. Le fait d'utiliser un service relativement light comme backend, ça me dérange pas. Je préfères même. Par contre le Javascript client... Parfois on écrit de ces trucs on se demande si
- Ca va pas ruiner l'ordi de papy en ajoutant dynamiquement 100000 d'éléments
- J'ai pas oublié un console.log('CACA DANS TA BOUCHE') quelque part
- Internet Explorer. Merde.
- POURQUOI IL Y A PLUS DE 100000 DE FRAMEWORKS/LIBRAIRIES JAVASCRIPT DIFFERENTS
C'était à propos de quoi cet article?
Ah oui! Les commentaires, c'est trop bien les commentaires. De nos jours on crée des sections interconnectées avec Facebook ou un autre service de commentaire hors-site (aussi interconnecté avec les réseaux sociaux) qui permettent le threading, la modération, bloquer les commentaires, ...
Un jour sur un blog (sans doute Wordpress mais pas sûr) j'ai vu une section commentaire toute linéaire avec des numéro devant chaque comment. Quand quelqu'un voulait insulter un commentateur précédent, il inscrivait "@241" au début de son commentaire pour signifier qu'il répond au #241.
C'est affreux comme système donc je me suis dit que c'était parfait.
Je suis un exemple de sécurité informatique
Attends les sections commentaires c'est un nid à spam, à failles XSS, à plan DOS chelou et à pur spam sauvage. Le nombre de robots spammeurs de sections commentaire dépasse largement le nombre de commentaires stupides sur les articles de presse click bait à propos du polonais qui a piqué le boulot de Franck à la centrale nucléaire de Tihange parce qu'il sait se lever une heure plus tôt et que de toutes façons il tient pas au matériel génétique dans ses gonades parce qu'il veut devenir un transexuel MtF.
Je vous livre ici quelques réflexions sur ces quelques aspects. Attention c'est hyper confidentiel, je serais trop deg. si quelqu'un arrivait à dump ma DB qui ne contient aucun mot de passe et genre 5 tables dont 3 aussi inutiles que vides.
XSS et Cross-truc scripting machin
C'était assez évident que je ne comptais pas autoriser le HTML. A la limite qu'on puisse mettre un emoji caca, oui, mais le HTML c'est une mauvaise idée quelqu'un m'a dit un jour.
Je pouvais le bloquer au niveau client et / ou au niveau serveur (API). Initialement j'ai préféré la deuxième possibilité, parce qu'échapper les caractères en niveau Javascript ne me faisait pas exactement pointer les tètons et quid si quelqu'un duplique mon site ou réalise un phishing et utilise un autre Javascript qui n'échappe pas les caractères (on peut toujours rêver hein)?
Il va falloir miser sur l'hypothèse que personne ne créera un faux Blog des gens compliqués. Cela étant si quelqu'un entreprend ce genre d'opération je ne vois pas pourquoi il utiliserait mon API de commentaires et pas son propre truc hardcodé. Les dernières lignes que j'ai tapées et que vous venez de lire (vous ou le robot de Google) sont complètement inutiles.
De toutes façons quand je balance du texte avec Polymer en utilisant des variables, le contenu est ajouté en utilisant un équivalent de:
TextNode.InnerText = 'TEXT';
En fait non c'est pas du tout ça tout à fait vraiment mais l'idée c'est que les caractères HTML sont convertis en unicode de toutes façons, et on ajoute pas les noeuds présents dans le texte au document.
Puisque le code HTML ne sera pas interprété de toutes façons, et que les codes unicode ou text seront échappés aussi, autant l'enregistrer tel quel au niveau du backend.
Serial-postage et spam
C'est bien connu les API ont un genre de limite de nombre de requètes qu'on peut leur demander en un certain temps. Enfin, c'est souvent le cas.
On se souvient tous aussi de vBulletin et phpBB qui vous demandent d'attendre 30s avant de faire une nouvelle recherche. Non? Moi je m'en souviens.
Reste plus qu'à trouver une requête qui coûte tellement cher au serveur (l'API) que ça va le ruiner en quelques requêtes, sans devoir payer un mafieux pour utiliser son botnet d'ampoules LED Wifi. De ce côté là on devrait être bons. Puis en fait on s'en fout si l'API est down, les gens viennent juste pour l'image d'arrière plan avec le mec à poil dans un cable GPIB.
Et si quelqu'un fait un script pour poster en série?
J'ai juste mis une limite de taille, il est possible de scripter un envoi massif de commentaire qui représente un phallus en ASCII et ce sera accepté. Mais attention! J'ai mis un CAPTCHA et il est super dur à prédire. Donc tout va bien.
Il y a également une faille dans la manière dont l'interface client fonctionne. Comme on crée un élément personnalisé en plus à ajouter au document pour chaque commentaire, un moment il risque d'y en avoir tellement que ça va faire ramer votre navigateur et prendre toute la mémoire. Enfin, hypothétiquement. Il faudra tester ça hein?
Injection SQL
C'est quoi encore le bidule que les "pirates" utilisent? SQLMAP je crois. Faudrait que je m'autohack, en plus les tutos Youtube là dessus sont vraiment très drôles, je conseille.
Y a un type un jour qui m'a dit qu'utiliser un prepared statement ça échappe automatiquement le SQL et toussa toussa (ici en Java):
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM articles WHERE article_url = ?");
stmt.setString(1, articleURL);
Je vais le croire pour l'instant parce que si c'est pas vrai le monde est vraiment trop mal fait pour continuer à y vivre en étant de temps en temps sobre.
DDOS
Faut prendre un abonnement pro CloudFlare pour masquer son adresse IP je pense. Le problème c'est que vous la connaissez déjà tous maintenant (c'est 51.255.166.120) - Si mon blog est inaccessible pour cause de DDOS je n'en serai probablement même pas informé mais ça voudra dire que je suis important et qu'il y a au moins un lecteur (qui est grave vénère).
Le cache
Ce site n'a rien contre la mise en cache sauvage et extrêmement longue de la plupart de ses élements. Ce qui est plutôt pas mal compte tenu de l'extrême lourdeur épaisse des "librairies" et autres 30000 fichiers de composants.
Il faudrait que j'explore ce que mon serveur HTTP peut faire pour envoyer des temps de mise en cache différents sur les fichiers que je modifie le plus.
Quoi qu'il en soit, si vous ne voyez pas la section commentaire, il faut appuyer quelques fois sur CTRL + F5.
Je suis également au courant que quand on clique sur "Commentaires" dans la page d'accueil ça ne scroll pas vers les commentaires. J'ai pas que ça à faire j'ai deux chats à nourrir.
De toutes façons la prochaine modif ce sera le support d'emoji dans les commentaires et les articles, on est en 2015 2016 hein.
EDIT 8 déc 2016: J'ai eu quelques soucis avec une vieille version d'un composant Polymer qui empêchait les commentaires de se charger uniquement sur certains articles et pour certaines dimensions d'affichage spécifiques (particulièrement sur mobile).
Le problème devrait être résolu.



Commentaires
Il faut JavaScript activé pour écrire des commentaires ici
#1
#2
#3
#4
#5