kanedo/Gitlab-Uberspace

Attachments

Closed this issue · 10 comments

Heyho,

ich habe da etwas rumgetrickst bezüglich des Attachment-Bugs und das mit Erfolg. Der Trick ist, per RewriteRule URLs, die mit uploads/ starten abzufangen und an ein PHP-Skript zu liefern. Dieses liest dann einfach die Datei vom Dateisystem und bietet sie zum Download an.

Die Frage ist nun: siehst du Sicherheitsbedenken in dem PHP-Skript? Hier das Skript: http://pastebin.com/cr2B6S7Q

Die .htaccess-Datei muss dann folgendermaßen angepasst werden:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^/uploads
RewriteRule ^uploads/(.*)$ static.php?f=$1 [L]

RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule ^(.*)$ http://127.0.0.1:65000/$1 [P]
</IfModule>

Also bei klappt das mit den Attachments nun. Wie sieht das bei dir aus? ;-)

Gefällt mir irgendwie nicht, dass da jetzt noch ein PHP-Skript läuft was da rumwerkelt. Das muss doch auch irgendwie anders gehen...

Ja, besonders schön ist das nicht. Geb ich zu^^

Das Problem ist scheinbar, dass der Webserver dafür sorgen muss, dass die Domain automatisch auf /home//gitlab/public gemappt wird. Da wir aber keine eigenen Directory-Sectons anlegen können, wird das wohl nix.

Ich sehe keine andere Möglichkeit, Dateien aus dem public-Verzeichnis auszulesen.

Außer: wir versuchen, nginx als Webserver zwischenzuschalten. Diesen könnte man ja dann selbst konfigurieren (ist jetzt mal eine Vermutung :D). Nur das sorgt dann natürlich für eine größere Systemlast, was ja auch nicht sein sollte..

BTW: Die .htaccess-Datei ist noch fehlerhaft^^

Besser ist:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^/uploads
RewriteRule ^uploads/(.*)$ static.php?f=$1 [L]

RewriteRule ^$ http://127.0.0.1:65000 [P]

RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule ^(.*)$ http://127.0.0.1:65000/$1 [P]
</IfModule>

Schreib das eventuell mal so mit rein. Das Ding ist, ich nutze die Atachements im Moment nicht. Meine Not ist also auch nicht so groß,
aber für andere ist das eventuell die einzige Möglichkeit

Okay, siehst du erstmal irgendwelche Sicherheitsrisiken? Theoretisch könnte man ja damit jede Datei im System ausgeben lassen. Ich frage dabei allerdings ab, ob man mit ../../parentdir versucht, aus dem uploads/-Verzeichnis auszubrechen..

Du könntest versuchen zunächst erstmal den realpath herauszufinden und ihn dann zu ersetzen bzw zu prüfen ob der Stamm richtig ist. Sichwort http://php.net/real_path

Brilliant 👍

soweit würde ich jetzt nicht gehen :)

Hast du die Migration mal probiert? Man kann mit GitLab übrigens auch Backups anlegen und wieder einspielen. Eventuell kann man das bei der Migrationsanleitung dazuschreiben (habs selbst aber nicht getestet..)

Damit das Issue auch mal geschlossen werden kann: Mit Gitlab 7.1 funktionieren auch die Anhänge ;-)