Forums Développement Multimédia

Aller au contenu

- - - - -

[Resolu] Encodeur maison : probleme d'echappement ✔

CODE PHP ANE

8 réponses à ce sujet

#1 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 13 April 2015 - 22:24 PM

Salut a tous.

Travaillant sur une ANE ces derniers temps, je viens de me rendre compte que quelque chose clochait dans ma communication Frontend -> Serveur ...

En effet, pour ajouter une touche de securite, j'essaye de faire un system d'encodage pour la communication Frontend -> Serveur qui s'effectue par le biais d'url. C'est un system assez simple, avant d'envoyer ma requete j'encode la propriete "data" de mon url avec un token aleatoire. Puis j'envoie ma requete au serveur sous cette forme :


Citation

monserveur/moscript.php?data=mesDatasProtegees&token=23


Cote serveur, je recupere le token qui me permet de reconstruire les data d'origine.




Et la j'en viens a mon probleme. Apres avoir passe la journee a investiguer, il semble que mon encodeur genere parfois des codes qui ressemblent a ceci <b>, php semble donc ne plus considerer <b> comme un string, mais comme l'ordre -> Bold.

Comment faire pour que cela n'arrive pas ?
Merci :)

#2 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 14 April 2015 - 15:55 PM

C'est vraiment ennuyeux ....

J'ai du mal a comprendre comment conserver la valeur de cette string data sans aucune interpretation de la part de php (et sans ajouter de nouveaux characteres dans la String pour ne pas fausser mon decodeur !

En effet, si je rajoute des \ pour echapper les characteres, alors mon decodeur ne marche plus, normal vu que ces characteres ne sont pas sense etre la.

Si je n'echappe pas les charactere et que j'essaye de retirer les characteres speciaux de mon encodeur, j'ai peur que ca ne soit pas bien propre et je risque d'oublier des commandes.

Un exemple d'url encodee :
-> data d'origine : id = a_000005
-> data=]%1Dihh[Zba%1D^]edaji]%1D^a`kjja`mlka`ihYnmZYlkjkj]mlnmYhgZYW,+)((,+)(-&token=457884
-> data decodee : id = a_0005

Comme vous pouvez le voir, il manque un bout, c'est legerement ennuyeux.

Notez que cela n'arrive que sur une partie des tokens utilises. La plus part du temps le decodeur marche correctement, mais sur certains token, les chaines de charactere generees sont des tags php (pas sur que cela se nomme de la sorte, par exemple <b qui va etre interprete par php comme une commande et plus comme le string '<b')


#3 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1682 messages

Posté 14 April 2015 - 16:21 PM

essaie de remplacer

Citation

<b>
par

Citation

&lt;b&gt;


#4 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 14 April 2015 - 16:32 PM

Coucou pol2095,

Merci pour ta reponse, <b> n'est qu'un exemple, mes chaines de characteres sont generees automatiquement par l'encodeur, il se peut donc qu'il genere d'autres commandes dans ce genre. Dans l'exemple que j'ai partage juste au dessu de ton message, tu vois que dans la chaine encodee, il n'y a pas de commande <b>, mais il doit y avoir une interpretation du signe + je pense par php, qui vient fausser la chaine de characteres et donc, mon decodeur.

Je ne peux pas faire du cas par cas et tester chaque token pour m'assurer qu'il ne cree pas de tag.
Il me faudrait un moyen d'echapper mon string data afin que le decodeur cote php aie access a un string non pervertis.

#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 14 April 2015 - 16:37 PM

Salut,

Utilise une regex ou un routine de ton cru pour interdire certains caractères spéciaux ou leur répétition lors de la génération, ça t'évitera d'avoir des "balises" qui sont générées aléatoirement.

#6 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 14 April 2015 - 17:05 PM

Bonjour Monsieur Spi,

Merci pour ta reponse.

J'ai retire les caracteres "<" , ">" et "\" de mes tables (en plus des "%", "=" et "&" que j'avais retire precedement pour eviter la corruption de l'url), le decodeur semble maintenant etre stable . Merci.

Y'a-t-il d'autres carateres creant des balises que je devrais retirer concernant php ? Se peut-il que lors d'une mise a jour de php d'autre balises non prevues actuellement se rajoutent a cette liste ?

Merci encore.

#7 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 14 April 2015 - 17:20 PM

Re,

Regarde la doc PHP pour les méthodes : http://php.net/manua...s.functions.php
Et la partie syntaxe des balises : http://php.net/manua...tax.phptags.php

Je recommande de virer aussi les ", ', ?, !, /, *, etc.... qui pourraient porter à confusion dans une URL.

#8 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1682 messages

Posté 14 April 2015 - 18:07 PM

tu as des fonctions qui encode directement tes urls : URLEncoder.encode() en java, encodeURI() en as3, url_encode() en PHP.

#9 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 14 April 2015 - 19:00 PM

Merci pol2095,

J'utilise deja URLEncoder.encode(), mais comme tu le precise cela n'encode que pour l'url. C'est pour cela que j'ai du retirer le % des caracteres possibles dans mon encodeur (vu que les url sont echappes avec le % ...).

D'ailleur je note que cote php, l'url decode se fait automatiquement au GET, pas besoin de le faire manuellement.

Alalala .... la communication entre les languages !




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP