Bug de la fonction de téléchargement
Bonjour,
En utilisant la fonction de téléchargement "?telechargement/xxxx" décrite dans le Wiki, je pense être tombé sur 2 problèmes (au moins en v5.1.5) :
1) La réécriture d'URL (plxMotor->urlRewrite()) ne supporte pas correctement le caractère "," qui est pourtant possible en sortie de plxEncrypt::base64url_encode()
En effet, la réécriture peut retourner ce genre d'URL (notez le "#" à la fin) :
Conséquence, le navigateur transmet la QueryString suivante (notez la fin) :
Actuellement dans class.plx.motor.php, il y a (ligne 905):
2) L'appel à plxMotor->sendTelechargement() est erroné
Conséquence, le téléchargement échoue.
Actuellement dans class.plx.motor.php, il y a (ligne 228):
En tout cas, bravo aux auteurs pour ce CMS très clair et bien fait.
Humpf
En utilisant la fonction de téléchargement "?telechargement/xxxx" décrite dans le Wiki, je pense être tombé sur 2 problèmes (au moins en v5.1.5) :
1) La réécriture d'URL (plxMotor->urlRewrite()) ne supporte pas correctement le caractère "," qui est pourtant possible en sortie de plxEncrypt::base64url_encode()
En effet, la réécriture peut retourner ce genre d'URL (notez le "#" à la fin) :
http://localhost/xxx/index.php?telechargement/QWNpZEJhc3RhcmQtb25seS1hY2lkLTIwMTIubXAzKmMxYWZmNg#,,
Au lieu de ceci :
http://localhost/xxx/index.php?telechargement/QWNpZEJhc3RhcmQtb25seS1hY2lkLTIwMTIubXAzKmMxYWZmNg,,
Conséquence, le navigateur transmet la QueryString suivante (notez la fin) :
telechargement/QWNpZEJhc3RhcmQtb25seS1hY2lkLTIwMTIubXAzKmMxYWZmNg
Par chance, tout semble marcher (miraculeusement) car "," correspond au "=" qui est le caractère de padding de l'encodage en BASE64...Actuellement dans class.plx.motor.php, il y a (ligne 905):
preg_match('/^([0-9a-z\_\-\.\/]+)?[\?]?([0-9a-z\_\-\.\/]+)?[\#]?(.*)$/i', $url, $args);
Il faudrait ajouter le caractère "," dans le second sous-pattern :
preg_match('/^([0-9a-z\_\-\.\/]+)?[\?]?([0-9a-z\_\-\.\/,]+)?[\#]?(.*)$/i', $url, $args);
2) L'appel à plxMotor->sendTelechargement() est erroné
Conséquence, le téléchargement échoue.
Actuellement dans class.plx.motor.php, il y a (ligne 228):
if($this->sendTelechargement($this->cible)) {
Il faudrait :
if($this->sendTelechargement($capture[2])) {
En tout cas, bravo aux auteurs pour ce CMS très clair et bien fait.
Humpf
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Merci de t'etre penché sur le probleme. Je garde tout ça précieusement
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)