Probleme beim Hochladen von Dateien mit komplexen Namen in Safari

Es scheint ein Problem mit hochgeladenen Dateien in Safari zu geben, wenn die Dateinamen Anführungszeichen (besonders problematisch) oder Nicht-ASCII-Zeichen enthalten. Die betreffenden Dateinamen lauten:

Create New "Open File" Macro and Copy Macro URL 1.1.kmmacros
Create New “Open File” Macro and Copy Macro URL 1.1.kmmacros

Die erste Datei enthält normale doppelte Anführungszeichen und verhält sich sehr schlecht; die zweite enthält geschweifte Anführungszeichen, die entstellt werden.

Siehe dieses Forumsthema:

In Chrome/Mac werden beide Dateien normal heruntergeladen als:

Create New _Open File_ Macro and Copy Macro URL 1.1.kmmacros
Create New “Open File” Macro and Copy Macro URL 1.1.kmmacros

Die doppelten Anführungszeichen in der ersten Datei werden durch Unterstriche ersetzt, was jedoch akzeptabel ist, vermutlich eine bewusste Entscheidung irgendwo.

In Safari werden die Dateien jedoch heruntergeladen als:

Create New .dms
Create New “Open File” Macro and Copy Macro URL 1.1.kmmacros

Die erste ist besonders besorgniserregend, da der Dateiname vollständig entstellt wurde, einschließlich der Erweiterung. Dies könnte potenzielle Sicherheitsimplikationen haben, da niemand weiß, wie die Anführungszeichen verarbeitet werden.

Die zweite scheint ein UTF-Konvertierungsproblem zu sein.

Ich vermute, dass dies eine Regression ist, entweder in Discourse (mein Server läuft auf Version 2.3.2) oder in Safari, da wir dies früher bemerkt hätten, aber ich konnte keine spezifischen älteren Fälle finden, bei denen die Makros eindeutig Anführungszeichen in ihren Namen hatten, um dies zu überprüfen. Es gibt definitiv ältere Dateien mit Nicht-ASCII-Zeichen (z. B. hier), und ich habe bisher nie bemerkt, dass sie nicht funktionieren.

Es ist besonders seltsam, dass es in Chrome funktioniert, aber nicht in Safari, was darauf hindeutet, dass es sich um ein Problem mit clientseitigem Code handelt.

3 „Gefällt mir“

Ich kann dies lokal mit der neuesten Version reproduzieren, indem ich eine Datei über Firefox hoch- und herunterlade. Safari kürzt den Dateinamen beim Download ebenfalls an den Anführungszeichen ab. Chrome muss Anführungszeichen in Dateinamen anders behandeln, indem sie durch Unterstriche ersetzt werden.

3 „Gefällt mir“

@gerhard, kannst du mal schauen?

2 „Gefällt mir“

send_file aus Rails verwendet derzeit nicht den Parameter filename* im Header Content-Disposition. Deshalb werden diese Dateinamen in den meisten Browsern verfälscht.

Rails 6 wird dies beheben: Encode Content-Disposition filenames on send_data and send_file · rails/rails@890485c · GitHub

Sollte ich vorerst einen Monkey Patch anwenden? Und es sieht so aus, als ob der S3-Speicher ebenfalls filename* setzen sollte.

2 „Gefällt mir“

Wahrscheinlich, aber ich bin mir nicht sicher, wann wir zu Rails 6 kommen werden?

Ja, bitte. Dieser Code sieht schon ein Jahr alt aus, daher sollte er ziemlich sicher sein (achte jedoch darauf, nach Fehlerkorrekturen zu suchen).

3 „Gefällt mir“

Ich habe gerade eine Korrektur eingepflegt. Du kannst sie testen, indem du auf den Branch tests-passed upgradest oder umschaltest.

3 „Gefällt mir“