Jump to content

Tentative de piratage (Message -> message length > 600)


Odjavel

Recommended Posts

Bonjour,

Une bétise qui me bloque : j'obtiens ce message d'erreur quand je tente d'envoyer un message au client depuis la fiche-commande dans le BO.

Tentative de piratage (Message -> message length > 600)

Pourtant, mon message fait moins de 600 caractères. Meme pas 550.

Quelqu'un a déjà eu ce problème ?

Merci !


OOps ! Grosse erreur ! J'ai posté chez les anglish ! Si un Zendik affuté passe par là pour le déplacer... Désolé.

Link to comment
Share on other sites

  • 3 weeks later...

Ça m'intriguait, j'ai donc enquêté (encore une bonne occasion d'explorer un peu le code...).
J'ai découvert que le message "Tentative de piratage" ("Hack attempt") est affiché par défaut par la routine d'erreur (si pas de message explicite est donné), et que le code est parsemé d'appels sans message (en général quand les données venant de la base de données sont incohérentes).

Ayant ma petite idée sur le problème (assez classique), j'ai pris un texte d'environ 570 caractères, que j'ai épicé "d'âccènts sùpplémëntàîrés"...

Et paf ! Ça n'a pas manqué, j'ai eu le message d'erreur un peu cryptique et ici pas approprié.

Explication : nos chers caractères français (accents et autres) doivent être encodés, parfois en entités HTML (désuet), ici en UTF-8, encodage Unicode où les dit caractères sont transformés en deux caractères spéciaux (pareil pour le russe, le chinois, etc. mais cela peut prendre trois à quatre caractères aussi).
Or le compteur JavaScript ne compte que les glyphes saisis, et le compteur PHP les comptent probablement après encodage... Résultat : on explose le compteur ! Problème potentiel aussi avec le HTML (j'ai pas vérifié).

J'ignore pourquoi ce champ est limité en taille, en base de données il est stocké dans un champ de taille variable de forte capacité.
Bon, normalement cette fonctionnalité est probablement conçue pour des petits messages... On peut envoyer des romans avec sa propre messagerie.
N'empêche qu'il faudrait corriger le JavaScript pour convertir en UTF-8 avant de compter, histoire d'avoir un compteur sur lequel on peut compter (sic). Ou, si ça ne pose pas de problème, d'accepter jusqu'à quatre fois la limite imposée, sinon il va y avoir des questions sur la fiabilité du-dit compteur... :-) (mais c'est plus délicat au niveau du code PHP générique, je le crains).

Je suggère de cliquer sur le lien BUG TRACKER en haut de la page et de signaler le problème (et de donner la référence du bug ici).

Link to comment
Share on other sites

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...