Login-Status via htaccess prüfen

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
CinKon
Beiträge: 129
Registriert: Do 9. Okt 2008, 09:13
Wohnort: Leipzig
Kontaktdaten:

Login-Status via htaccess prüfen

Beitrag von CinKon » Mo 29. Sep 2014, 14:46

Hi,

ich komme leider bei einem recht kritischen Problem nicht weiter.
Bei einer Website sollen Dokumente, die nur für eingeloggte Benutzer gedacht sind, auch nur erreichbar sein, wenn man als Frontend-/Backenduser eingeloggt ist, also wenn

Code: Alles auswählen

$auth->auth["uid"] != "nobody"
Ansonsten kann man ja jedes Dokument im Upload-Folder aufrufen, sofern die URL bekannt ist.
Ich habe hier jetzt als sicherste Methode folgende erdacht:

.htaccess im betreffenden Upload-Ordner:

Code: Alles auswählen

Options +FollowSymLinks  
RewriteEngine on  
RewriteRule ^(.*)$ /front_content.php?idart=578&file=/upload/protected/$1 [NC]
Damit wird erstmal prinzipiell der Zugriff auf alle Dokumente dieses Ordners verhindert.

Und ein Artikel der das Modul zum prüfen des Login-Status anthält:

Code: Alles auswählen

<?php

	if ($auth->auth["uid"] == "nobody") {
		echo 'denied';
	} else {
		readfile($_REQUEST['file']);
	}

?>
Problem dabei ist, dass beim Aufruf via htaccess immer "nobody" ausgegeben wird, obwohl man als Frontend-User eingeloggt ist...
Wie lässt sich das lösen?

Oder gibt es einen besseren Workaround? Das ganze über ein Modul zu lösen, indem man die Dokumente über einen Artikel verlinkt ("front_content.php?idart=34&downloadfile=/upload/protected/text.jpg", oder in der Art), macht meiner Meinung nach keinen Sinn, da man im Zweifelsfall die Dokumente ja trotzdem über die direkte URL aufrufen kann...

Schöne Grüße

Lars
"Marty, du musst VIERDIMENSIONAL denken!" - Doc Brown

Zuschauer
Beiträge: 141
Registriert: Do 5. Dez 2013, 08:57
Kontaktdaten:

Re: Login-Status via htaccess prüfen

Beitrag von Zuschauer » Mo 29. Sep 2014, 16:21

Hallo Lars,

die Lösung ist eine Kombination der beiden von dir genannten Möglichkeiten:
- .htaccess verbietet direkten Zugriff
- Modul liefert die Datei aus (ist von der .htaccess nicht betroffen und prüft eigenständig die Berechtigung)

Gruß
Zuschauer

CinKon
Beiträge: 129
Registriert: Do 9. Okt 2008, 09:13
Wohnort: Leipzig
Kontaktdaten:

Re: Login-Status via htaccess prüfen

Beitrag von CinKon » Di 30. Sep 2014, 08:35

Ja, habs nun erstmal so lösen müssen. An sich funktioniert das ja auch, wenn die verlinkten Dateien via CMS_LINKEDITOR angegeben werden, dann kann ich über das Modul mit den Links ja machen was ich will.
Werden die Dateien vom Redakteur aber über ein normales CMS_HTML-Feld verlinkt, kann ich die ja nicht umschreiben...
"Marty, du musst VIERDIMENSIONAL denken!" - Doc Brown

Oldperl
Beiträge: 4260
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Login-Status via htaccess prüfen

Beitrag von Oldperl » Di 30. Sep 2014, 12:00

CinKon hat geschrieben:Werden die Dateien vom Redakteur aber über ein normales CMS_HTML-Feld verlinkt, kann ich die ja nicht umschreiben...
Auch da hilft eine .htaccess, diese muss die eingehende Abfrage der Datei abfangen und auf eine PHP-Datei, oder eine Frontendseite mit Datei-Modul, umleiten. Dieses wertet dann die Request-URL aus und liefert, wenn erlaubt, die entsprechende Datei aus.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

CinKon
Beiträge: 129
Registriert: Do 9. Okt 2008, 09:13
Wohnort: Leipzig
Kontaktdaten:

Re: Login-Status via htaccess prüfen

Beitrag von CinKon » Di 30. Sep 2014, 12:26

Oldperl hat geschrieben:
CinKon hat geschrieben:Werden die Dateien vom Redakteur aber über ein normales CMS_HTML-Feld verlinkt, kann ich die ja nicht umschreiben...
Auch da hilft eine .htaccess, diese muss die eingehende Abfrage der Datei abfangen und auf eine PHP-Datei, oder eine Frontendseite mit Datei-Modul, umleiten. Dieses wertet dann die Request-URL aus und liefert, wenn erlaubt, die entsprechende Datei aus.

Gruß aus Franken

Ortwin

Genau das war mein Ansatz ;)
Wie im Hauptpost aber zu lesen, funktioniert das leider nicht, da das Script IMMER $auth->auth["uid"] = "nobody" ausgibt, also den Login-User, der über die htaccess kommt, nicht erkennt.
"Marty, du musst VIERDIMENSIONAL denken!" - Doc Brown

Antworten