Seite 1 von 1

Schutzmechanismus beim Datenbank-Dateisystem (dbfs)

Verfasst: Mi 21. Dez 2005, 12:30
von panti
Hello

Ich muss ein paar Dateien nur für Frontend-Benutzer zugänglich machen. Diese Dateien habe ich im Datenbank-Dateisystem (dbfs) upgeloadet, die Checkbox für den Schutz aktiviert. In einem Artikel erstelle ich einen Link zu einer dieser geschützten Dateien.

Problem: Die Datei ist leider nicht geschützt und kann von jedem abgerufen werden. Der Link ist entsprechend "...?file=dbfs:/<Datei.ext>".

Weiss jemand, was man noch ändern bzw. anpassen muss?

Besten Dank für Eure Antworten.

Gruss,
Pantelis

Verfasst: Mi 21. Dez 2005, 19:15
von Martuno
Hallo,

hatte bei mir folgendes Phänomen: im FireFox (wo ich auch das Contenido-Backend offen hatte) liessen sich alle Files downloaden und das Schutz-Häckchen war wie von selbst verwschwunden. Ist dies gar ein (Security-)Bug?!?


Falls Du einen feingranularen Schutzmechanismus auf User/Group-Ebene suchst, nützt Dir vielleicht auch folgendes:
http://www.contenido.org/forum/viewtopic.php?t=10877


Gruss
Martin

con_properties

Verfasst: So 8. Jan 2006, 18:03
von DonBender
Hallo,

ich saß bis eben vor einem ähnlichen Problem.
Das Schutzhäckchen kann man doch nur bei den DBFS-Dateien anklicken.

Dieses Häckchen und die anderen Felder (außer die Beschreibung) gehören zur Tabelle con_properties.

Bei mir haben sich diese Einstellungen (Schutzhäckchen und Medianame) jedes Mal bei einem neuen Aufruf der Dateiverwaltung in der Tabelle con_properties gelöscht.

Das liegt wohl daran, dass bei jedem neuen Aufruf der Dateiverwaltung eine Anzeige "Keine Dateien gefunden / vorhanden." auftaucht -> Diese Anzeige wird durch die includes.upl_files_overview.php erzeugt.

Hier liegt aber nicht das Problem. Bei dem Aufruf der Datei wird eine Variable $path erzeugt, wo der Anfangswert leer ist.

Dieser Wert wird durch den Funktionsaufruf

Code: Alles auswählen

uplSyncDirectory($path);
an die Datei function.upl.php übergeben und die Funktion uplSyncDirectoriy ausgeführt.

In dieser Funktion werden die Tabellen "upl" und "properties" überprüft.

Code: Alles auswählen

   	
function uplSyncDirectory ($path):
.
.
.
while ($property = $properties->next())
   	{
   		if (!file_exists($cfgClient[$client]["upl"]["path"].$property->get("itemid")))
		{
			$properties->delete($property->get("idproperty"));	
		}
   	}
Diese Abfrage verursacht das Löschen der dbfs:/... - Einträge in der Tabelle con_properties und somit das Schutzhäckchen und co.

Ich hab nun diese Abfrage ein wenig modifiziert (nachdem ich die Ursache in stundenlanger Detektivarbeit gefunden habe).

Code: Alles auswählen

   	while ($property = $properties->next())
   	{
   		if (!file_exists($cfgClient[$client]["upl"]["path"].$property->get("itemid")) && $path != "")
		{
			$properties->delete($property->get("idproperty"));	
		}
   	}
Naja, jedenfalls funktioniert das jetzt mit dem Setzen des Schutzhäckchens und es bleibt auch nach einem erneuten Aufruf der Dateiverwaltung in der Tabelle con_properties bestehen.

Probierts mal aus - und wenn ich eine bessere Lösung habt, einfach reinposten.

Verfasst: So 8. Jan 2006, 21:48
von HerrB
Verschoben.

Gruß
HerrB

Verfasst: Mi 7. Jun 2006, 16:30
von HerrB
Fehler scheint nicht mehr aufzutreten. Geschlossen.

Gruß
HerrB

Verfasst: Do 4. Jan 2007, 00:40
von HerrB
Fehler scheint doch noch aufzutreten, Topic wieder geöffnet.

Gruß
HerrB

Verfasst: Do 25. Jan 2007, 01:32
von HerrB
Wirklich geiler Fehler. Ein Klick auf Upload und alle Properties von dbfs-Dateien sind weg. Das nenne ich effektiv.

Fix ist im Prinzip wie beschrieben, jedoch würden dann die Dateien direkt in Upload nicht mehr überprüft. Genaugenommen müssen die dbfs von der Existenzprüfung (in der Funktion uplSyncDirectory) ausgenommen werden:

Code: Alles auswählen

$properties->select("idclient = '$client' AND itemtype='upload' AND type='file' AND itemid LIKE '".$path."%' AND itemid NOT LIKE 'dbfs%'");
Zum Checkin vorgesehen.

Gruß
HerrB

Verfasst: Di 30. Jan 2007, 21:10
von HerrB
Done.

Gruß
HerrB