Schutz vor unberechtigtem Dateizugriff (mod_xfiles)

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Schutz vor unberechtigtem Dateizugriff (mod_xfiles)

Beitrag von MarkusR »

Bis irgendwann mal das Dateimanagement von ConPresso auch eine Rechteverwaltung bekommt, hier ein Schutz für Bilder und Dateien, die für eine geschlossene Rubrik hochgeladen werden.

Einfach alle Dateien ins Verzeichnis _data hochladen!
_data/.htaccess
_data/download.php
_data/forbidden.png

Technik:
Mittels einer htaccess-Datei werden alle Aufrufen von nicht-PHP-Dateien auf ein Script download.php umgeleitet.
Dieses prüft, ob die Datei von ConPresso gehandelt wird und wenn ja, ob es eine geschlossene Rubrik ist. Trifft nichts davon zu, dann wird die Datei ausgegeben.
Ist es eine geschlossene Rubrik, dann wird geprüft, ob der eingeloggte User (bzw. seine Gruppe) diese Rubrik auch sehen darf. Falls ja, wird die Datei ausgegben, falls nein, wird eine Ersatzgrafik ausgegeben (die natürlich nach Belieben durch eine andere PNG-Datei ersetzt werden kann).

Feedback erwünscht!
Dateianhänge
forbidden.png
forbidden.png (14.86 KiB) 17890 mal betrachtet
cpo4_mod_xfiles.zip
(17.82 KiB) 761-mal heruntergeladen
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Markus,

schöne Idee, zu prüfen, ob die Datei in einer geschlossenen Rubrik verwendet wird.

Aufgefallen ist mir auf den ersten Blick, dass da manchmal $minetype und manchmal $mimetype verwendet wird. Ich habe aber noch nicht geschaut, ob das ein Tippfehler oder Absicht ist :).

Die _data/index.php schlägt übrigens einen ähnliches Mechanismus vor. Wir hatten das als "Prototyp" mal für einen Kunden umgesetzt.

Dort werden Dateien geprüft, die mit "secret_" anfangen (oder etwas anderes, je nach Geschmack). Diese werden dann nur ausgeliefert, wenn ein Benutzer eingeloggt ist.

Ansonsten wird ein "HTTP/1.0 403 Forbidden"-Header geschickt.

Allerdings treibe ich dort nicht so viel Aufwand mit Browser-Erkennung, usw. Leider ist das bei uns nirgendwo im Einsatz, so dass ich bisher auch keine Erfahrungen mit dem Code habe, ausser den einfachen Tests, die man so machen kann.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

balu hat geschrieben:Aufgefallen ist mir auf den ersten Blick, dass da manchmal $minetype und manchmal $mimetype verwendet wird. Ich habe aber noch nicht geschaut, ob das ein Tippfehler oder Absicht ist :).
Tippfehler :oops:

Habe das Archiv oben aktualisiert...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
hscha
ConPresso-Experte
Beiträge: 712
Registriert: 22.02.2006 22:00
Wohnort: Berlin
Hat sich bedankt: 216 Mal
Danksagung erhalten: 25 Mal
Kontaktdaten:

Beitrag von hscha »

Hallo Markus,

ich habe das Mod auf zwei Sites ausprobiert: Auf einer läufts, auf einer anderen nicht.
Auf dieser läufts:
http://www.gokinkel.cidsnet.de/cms/_dat ... ntwurf.pdf
Beim Klick auf diesen Link wirst du ohne eingeloggt zu sein, das "forbidden.png" zu sehen bekommen. Alle anderen Dateien in nicht geschlossenen Rubriken lassen sich anzeigen. Auch die Image-Dateien, die im _data-Verzeichnis liegen, werden angezeigt.
http://www.gokinkel.cidsnet.de

Auf einer anderen meiner Sites läufts leider nicht. Der Zugriff auf die Image-Dateien im _data-Verzeichnis ist nicht mehr möglich. Ich weiß leider noch nicht, woran das liegt (siehe Screenshot)!

Grüße von
Horst
Dateianhänge
das Image aus dem _data-Verzeichnis wird nicht angezeigt
das Image aus dem _data-Verzeichnis wird nicht angezeigt
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Da zwangsläufig alle Dateien geprüft werden müssen, wird bei Fehlern (durch Script oder Server) eben nichts mehr angezeigt.
Wenn es keine Meldungen gibt, dann muß man ins Logfile schauen...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Könnte es sein, dass .htaccess-Dateien auf dem Server nicht erlaubt sind?

Balu
Bartels.Schöne
ConPresso Support & Development
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Hallo,

bin gerade auf diesen alten Beitrag gestoßen, da ich genau das brauche.
Habe es auch gleich mal eingebaut aber geht leider nicht. Der Zugriff auf die Dateien in _data ist immer noch möglich.

Muss ich dem _data Verzeichnis besondere Recht geben (CHMOD)?
Oder liegt es daran, dass meine CPO Version oder der Browser zu neu sind?
(cpo 4.1.6 und aktueller FF)

Gruß,
dutch
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Werden ggf. htaccess-Dateien nicht unterstützt?

Oder hast Du die .htaccess-Datei vielleicht nicht auf den Server geladen, weil Dein System diese nicht anzeigt?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Hallo Markus,

der Server unterstützt (laut Provider) .htaccess Dateien und ich habe auch alle drei Dateien hochgeladen ins _data Verzeichnis, .htaccess, donwload.php und das forbidden.png

Kann ich evtl. irgendwie einfach testen, ob die .htaccess auch wirklich gelesen wird?

Gruß,
dutch
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Kannst einfach mal eine andere dorthin laden, z.B.

Code: Alles auswählen

RewriteEngine on

# bitte mit www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
und dann eine Datei ohne führendes www. in der URL aufrufen. Das sollte dann eigentlich automatisch auf die WWW-URL umgeleitet werden.

Nutze ich sowie auf den meisten Seiten um Session-Probleme zu vermeiden.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Hallo Markus,

gerade getestet aber keine Reaktion...
Dann scheint die .htaccess wohl nicht gelesen zu werden.
Ich werde mal beim support des Providers direkt nachfragen.
Danke schon mal so weit!

Gruß,
dutch
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Hallo Markus,

der Provider hat mir bestätigt, dass .htaccess auf dem Server läuft aber mit Einschränkungen. Für mich hörte es sich so an, dass .htaccess Dateien nur im root des Servers laufen...
Daraufhin haben die die .htaccess verändert, um zum Ziel zu kommen, aber das Ergebnis funktioniert leider ebenso wenig. Die verlinkten PDFs lassen sich immer noch ohne login mit einem deep-link öffnen.

Habe die Lösung auch mal auf einer ganz anderen Site eingebaut (anderer Provider). Aber auch da geht es nicht. Wird einfach ignoriert...

Gibt es evtl. noch eine denkbare Alternative zur Sicherung?
Ich, als naiver CPO-user :) , war eigentlich davon ausgegangen, dass alles, was in einem geschlossenen Bereich online geht, auch geschützt ist, also inkl. verlinkter Dateien. Die geschützten Bereiche werden ja meistens genau dafür benutzt, um Dokumente nur einer bestimmten Gruppe zugänglich zu machen.
Im Nachhinein natürlich logisch, dass dem nicht so ist, da alles in _data liegt.
Wäre es da nicht sinnvoll, dass CPO für geschlossene Rubriken ein separates _data Verzeichnis anlegt, oder denke ich wieder zu naiv? ;)

Grüße,
dutch
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Du denkst da schon richtig, aber das macht kein CMS so. Bei Forensystemen wie phpBB ist das dagegen üblich, dafür hat man aber keine Freiheiten wie im CMS.

CMS-Systeme sind ja in der Regel dazu da Informationen zu veröffentlichen, daher sind nicht-öffentliche Dinge nicht das primäre Augenmerk und es wird meist darauf vertraut, dass, sobald etwas nicht mehr durch Links erreichbar ist, es nicht mehr als öffentlich gilt. Und die Texte können durch Sperrung ja auch unerreichbar gemacht werden, das gilt aber nicht für die Medien aus _data.

Wer Wert auf Sicherheit legt, der wird einen Server benutzen, der Dinge wie mod_rewrite uneingeschränkt unterstützt.

Ein separates Verzeichnis bringt übrigens auch nichts, wenn das genauso ungeschützt ist.

Ich warte derzeit auf einen Kundenauftrag, der eine Mediendatenbank benötigt, bei der nur eingeloggte User je nach Berechtigung bestimmte Dateien herunterladen können. Dort plane ich ein verändertes Upload-Verfahren mit einem entsprechenden Dateischutz. Aber auch das wird nicht ohne mod_rewrite gehen. Und der Auftrag ist noch nicht erteilt.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Mit dem separaten Verzeichnis meinte ich eigentlich natürlich auch ein geschütztes, in das man die uploads lädt, die in geschlossenen Bereichen verlinkt sind.

Naja, wie auch immer. Das bedeutet also, dass ich auf sehr vielen Standard-Servern keine wirklich sicheren geschlossenen Bereiche anlegen kann?

Aktuell habe ich das Problem, dass ein PDF, das in einem geschlossenen Bereich verlinkt ist, auch über Google gefunden wird... was den Kunden natürlich nicht erfreut :(

Gruß
dutch
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Das hier ist übrigens die angepasste .htaccess des Providers, die der in root gelegt hat, die aber, wie gesagt, auch nicht funzt:

Code: Alles auswählen

<Files .htaccess>
order allow,deny
deny from all
</Files>

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mcfworld\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mcfworld\.com$
RewriteRule ^cms\/_data\/\/?(.*)$ "download.php?filename=$1" [R=301,L]
Antworten