News:

Support for jDownloads 3 has been ended
Since 17 August 2023 Joomla.org has discontinued support for Joomla 3.x. Therefore, we will no longer offer official support for our Joomla 3 jDownloads version 3.9.x from January 2024.
Please update your website to the latest Joomla version (Joomla 4 or Joomla 5) as soon as possible. Afterwards, please update jDownloads to the latest published version. The longer you delay, the more difficult the upgrade process for your website is likely to be.

Main Menu
Support-Forum

Fehler im Titel - Resservierte Zeichen sind möglich

Started by Lord_Pinhead, 09.03.2018 12:38:17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Lord_Pinhead

Hallo,
ich habe ein Fehler von einem Kollegen bekommen das er einen Download nicht öffnen kann.
Es hat sich herausgestellt, dass er ein / in den Titel eingegeben hat, daraus wurde die Download URL
erstellt und setzte sich wie folgt zusammen:

https://jdownloads.joomla.intern/index.php/dl/download/4285-Datei+1%2F92938492

Ich habe den Dateinamen beim Speichern auch durch urlencode geschleust, da es schon einmal Probleme damit gab,
die URL würde übersetzt lauten:

https://jdownloads.joomla.intern/index.php/dl/download/4285-Datei+1/92938492

File_ID: 4285
File_Title: Datei+1/92938492

Nun habe ich mir die /components/com_jdownloads/assets/js/jdownloads.js Datei einmal angesehen und
der Titel wird nur auf Leerinhalte überprüft in CheckForm().
Ich würde vorschlagen, dass einige Illegale Zeichen wie Slashes, dass & usw. im Titel verboten werden sollten.

Ein schneller Regex wäre "/^[\w +\.,#\u00E0-\u00FC\-\:\%\€\@\§\!]+$/i", damit habe ich zumindest Internationale Sonderzeichen
und einige Sonderzeichen die gebräuchlich sind, aber Steuerzeichen die in einer URL ein Genickbruch verursachen können bleiben
draussen. Das müsste dann nur in der CheckForm() Funktion rein und dann Matchen.

Ein Richtiges Beispiel mit allen mir bekannten Zeichen (Deutsche Umlaute und ein paar Französische) erzeugen folgende URL durch
urlencode:

https://jdownloads.joomla.intern/index.php/dl/download/1292-abcdefghiop%C3%B6%C3%A4%C3%BCascel2ql3%C3%84%C3%96%C3%9C++%C3%A0++geWEGE+aper%C3%A7u+FileTitle%2B%2C._-%25%40%3A%C2%A7%E2%82%AC%21aasd

Das habe ich in der "components/com_jdownloads/helpers/jdownloadshelper.php : function sendMailUpload($data)" in einem Custom Field gespeichert
und die URL entsprechend für eine Infomail escaped:

....
$url = JURI::base().'index.php/dl/download/'.urlencode($data->file_id."-".$data->file_title);
....

Der Download funktioniert aber ohne Probleme.

Ein Test für die Regex ist unter https://regex101.com/r/mnN5I5/3 zum probieren.

Ein weiteres Problem im IE hatte ebenfalls jemand. Sein Browser hat die Javascript Datei
http://jdownloads_joomla/components/com_jdownloads/assets/js/jdownloads.js zerstört beim Laden.
Das habe ich behoben indem ich alle Singleline Kommentare auf Multiline Kommentare geändert habe. Der Browser hat
hier beim Laden die Zeilenumbrüche nicht verarbeitet.

Es wäre eine gute Idee das im Release zu tun oder besser, im Release eine Minimale Javascript Datei zu erzeugen.
Zum probieren wäre https://jscompress.com/ ein Ansatz. Ich habe die Datei einmal minimalisiert und alles funktioniert
in meiner Installation wie gewollt.

Die zwei Sachen habe ich in Joomla 3.5.1 mit JDownloads 3.2.45 und einer Testinstallation von Joomla 3.8.5 mit JDownloads 3.2.58
getestet.

Wenn Arno möchte, schicke ich die Änderungen Ihm fix rüber vom Javascript.

Grüße
Lord_Pinhead
  •  

Arno

Hi,
ja bitte schick mir mal deine Vorschläge via PM.
Best Regards / Gruß
Arno
Please make a Donation for jDownloads and/or write a review on the Joomla! Extensions directory!
  •