jDownloadsownloads.com



Author Topic: Fehler im Titel - Resservierte Zeichen sind möglich  (Read 227 times)

0 Members and 1 Guest are viewing this topic.

Offline Lord_Pinhead

  • Newbie
  • *
  • Posts: 2
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

Offline Arno

  • Administrator
  • ***
  • Posts: 12.209
    • jDownloads.com
Re: Fehler im Titel - Resservierte Zeichen sind möglich
« Reply #1 on: 09.03.2018 13:59:58 »
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!