zestedesavoir / zds-site

Cœur du projet technique de Zeste de Savoir
https://zestedesavoir.com
Other
268 stars 161 forks source link

Masquage : Erreur interne au serveur #5028

Open gllmc opened 6 years ago

gllmc commented 6 years ago

Bonjour,

J'ai essayé de masquer un message plusieurs fois avant 13:30 26/08/2018 (heure de paris) quand le message de masquage est trop long, j'obtiens : Erreur interne au serveur

Cordialement,

A-312.

Sujet : https://zestedesavoir.com/forums/sujet/11202/masquage-erreur-interne-au-serveur/ Envoyé depuis Zeste de Savoir

firm1 commented 3 years ago

Je n'arrive pas a reproduire ce bug, suis-je le seul ?

Situphen commented 3 years ago

Il y a un attribut maxlength="80" sur le champ input donc le navigateur bloque à 80 caractères et ça ne pose pas de soucis, mais effectivement si on fait sauter cette limite et qu'on envoie plus de 80 caractères alors il y a une erreur interne. Je ne sais pas à quel point ça vaut le coup de corriger ça.

philippemilink commented 1 year ago

Je viens de regarder un peu ce bug.

Comment reproduire le bug :

  1. Aller sur un sujet de forum où l'utilisateur connecté a posté ce message
  2. Ouvrir la modale pour masquer ce message
  3. Avec les outils de développement du navigateur, supprimer l'attribut maxlength=80 du champ où on peut mettre la raison du masquage
  4. Mettre un message dans le champ plus long que 80 caractères
  5. Valider

Pas d'erreur (en local) et on constate que la raison du masquage est affichée en entier (alors qu'elle devrait être tronquée à 80 caractères). On n'a pas d'erreur et la raison du masquage est affichée entièrement, car en local on utilise SQLite comme base de données, et SQLite ignore les tailles limites des champs. Donc on se prend une erreur 500 uniquement en production.

Je me demande quelle est la meilleure façon de traiter cette erreur :

Quoi qu'il en soit, la priorité de ce bug est très mineure : on a la protection du maxlength (qui peut être facilement contournée) et si cette protection est contournée, on a une erreur 500 qui n'endommage pas la cohérence de la base de données.