Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Dokument im Medienpool mit PW-Schutz
Hallo!
Ich habe für einen passwortgeschützten Bereich das 3teilige Login-Modul (http://www.redaxo.de/165-0-moduldetails ... ule_id=328) eingebaut, funktioniert auch prima!
Nun stehe ich vor dem Problem, dass die im internen Bereich verlinkten pdf-Dokumente ebenfalls geschützt werden sollen. Die Anleitung unter http://wiki.redaxo.de/index.php?n=R3.Dokuschutz habe ich gefunden.
Teil 1 funktioniert: mit einer .htaccess-Datei im files-Ordner schütze ich alle pdf-Dateien, die "intern_...pdf" heißen und verlinke mit RewriteRule auf die Startseite.
Den zweiten Teil habe ich nicht hinbekommen und - ehrlich gesagt - auch nicht verstanden.
Wenn ich es richtig verstehe, muss ich einen Artikel anlegen und dort mit einem Modul den angegebenen Quellcode einstellen. Habe also den Code in die Modulausgabe geschrieben und wenn ich "Block hinzufügen" anklicke, fragt mein Browser, ob ich die Datei öffnen oder speichern möchte und zeigt mir dann die unformatierte Artikelseite an. Wie bekomme ich also den Code in einen Artikel?
Und dann soll man wohl ein Modul schreiben, mit dem pdf-Dokumente hochgeladen und über den soeben angelegten Artikel durchgeparst werden können. So weit bin ich noch gar nicht gekommen...
Hat schon einmal jemand diesen Passwortschutz für Dokumente installiert und kann mir die Anleitung etwas näher erläutern? Oder gibt es noch eine andere Methode, um Dokumente im Medienpool zu schützen?
Für jeden Hinweis wäre ich sehr dankbar!
Viele Grüße
Anne
Ich habe für einen passwortgeschützten Bereich das 3teilige Login-Modul (http://www.redaxo.de/165-0-moduldetails ... ule_id=328) eingebaut, funktioniert auch prima!
Nun stehe ich vor dem Problem, dass die im internen Bereich verlinkten pdf-Dokumente ebenfalls geschützt werden sollen. Die Anleitung unter http://wiki.redaxo.de/index.php?n=R3.Dokuschutz habe ich gefunden.
Teil 1 funktioniert: mit einer .htaccess-Datei im files-Ordner schütze ich alle pdf-Dateien, die "intern_...pdf" heißen und verlinke mit RewriteRule auf die Startseite.
Den zweiten Teil habe ich nicht hinbekommen und - ehrlich gesagt - auch nicht verstanden.
Wenn ich es richtig verstehe, muss ich einen Artikel anlegen und dort mit einem Modul den angegebenen Quellcode einstellen. Habe also den Code in die Modulausgabe geschrieben und wenn ich "Block hinzufügen" anklicke, fragt mein Browser, ob ich die Datei öffnen oder speichern möchte und zeigt mir dann die unformatierte Artikelseite an. Wie bekomme ich also den Code in einen Artikel?
Und dann soll man wohl ein Modul schreiben, mit dem pdf-Dokumente hochgeladen und über den soeben angelegten Artikel durchgeparst werden können. So weit bin ich noch gar nicht gekommen...
Hat schon einmal jemand diesen Passwortschutz für Dokumente installiert und kann mir die Anleitung etwas näher erläutern? Oder gibt es noch eine andere Methode, um Dokumente im Medienpool zu schützen?
Für jeden Hinweis wäre ich sehr dankbar!
Viele Grüße
Anne
Zuletzt geändert von Ruediger.Nitzsche am 4. Feb 2011, 12:02, insgesamt 2-mal geändert.
Grund: Thread war als gelöst markiert, was aber so nicht wirklich stimmt
Grund: Thread war als gelöst markiert, was aber so nicht wirklich stimmt
Hallo Anne,
du kannst folgendermaßen vorgehen:
1. htaccess-Datei anlegen,
wie hier http://wiki.redaxo.de/index.php?n=R3.Dokuschutz beschrieben.
Es muß auch eine Datei leer.gif geben, die alternativ zum PDF angezeigt wird.
2. Im Redaxo-Backend ein Template erstellen, das nur den PHP-Code enthält, der in dem Wiki-Text angegeben ist.
3. Einen Artikel im internen Bereich anlegen, dem dieses Template zugewiesen wird. Hier wird das ausgewählte PDF dann angezeigt bzw. zum Download angeboten.
4. Ich nehme an, die PDF's werden auf beliebigen internen Inhaltsseiten zum Download angeboten. Dort mußt du den Link so erstellen, dass er auf den Artikel von Punkt 3 verlinkt und der Dateiname angehängt wird, wie im Wiki beschrieben:
Den Link muß du hinsichtlich article_id und Dateinamen noch entsprechend anpassen.
5. Die PDF's können normal über den Medienpool hochgeladen werden.
Gruß
Dagmar
du kannst folgendermaßen vorgehen:
1. htaccess-Datei anlegen,
wie hier http://wiki.redaxo.de/index.php?n=R3.Dokuschutz beschrieben.
Es muß auch eine Datei leer.gif geben, die alternativ zum PDF angezeigt wird.
2. Im Redaxo-Backend ein Template erstellen, das nur den PHP-Code enthält, der in dem Wiki-Text angegeben ist.
Code: Alles auswählen
<?php
$file_name = $_REQUEST["filename"];
$file_path = $REX['INCLUDE_PATH'].'/../../files/'.$file_name;
if ($fp = fopen ($file_path, "r"))
{
$file_type = "application/octetstream";
header("Expires: Mon, 2 Jan 2001 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// always modified
header("Cache-Control: no-store, no-cache, must-revalidate");// HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header('Content-Type: '.$file_type.'; name="'.$file_name.'"');
header('Content-Disposition: attachment; filename="'.$file_name.'"');
fpassthru ($fp);
fclose($fp);
}
?>
4. Ich nehme an, die PDF's werden auf beliebigen internen Inhaltsseiten zum Download angeboten. Dort mußt du den Link so erstellen, dass er auf den Artikel von Punkt 3 verlinkt und der Dateiname angehängt wird, wie im Wiki beschrieben:
Code: Alles auswählen
index.php?article_id=100&filename=myfile.pdf
5. Die PDF's können normal über den Medienpool hochgeladen werden.
Gruß
Dagmar
Hi,
sorry ich habe den Eintrag grade erst gefunden.
Ich bekomme das nicht hin. Ich bekomme ein File heruntergeladen (ein PDF), das kommt auch an, nur erkennt der Acrobat das Ding nicht mehr.
Ich habs mal mit nem Texteditor aufgemacht und das File sieht innen drin so aus:
Das heißt es wird zuerst das ganz normale template übertragen.
Ich habe schon versucht das Template zu ändern auf ein minimales Template, wo zuerst die athorization geprüft wird und danach dann direkt das file kommt (ohne header). Und im Fehlerfalle kommt dann das Template mit ner Fehlermeldung raus.
Aber irgendwie tut das nicht.
Hat da wer ne idee?
sorry ich habe den Eintrag grade erst gefunden.
Ich bekomme das nicht hin. Ich bekomme ein File heruntergeladen (ein PDF), das kommt auch an, nur erkennt der Acrobat das Ding nicht mehr.
Ich habs mal mit nem Texteditor aufgemacht und das File sieht innen drin so aus:
Code: Alles auswählen
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<base href="http://redaxo4.l-nibelungia.de/" />
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<title>Redaxo4 Test | download</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link rel="stylesheet" type="text/css" href="./files/main_1.css" media="screen" />
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table1">
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table2">
<tr>
<td height="55" valign="top" bgcolor="#001C4E" width="72%">
<img border="0" src="files/bnr_top.jpg" width="800" height="55"></td>
[...]
<td><!-- Content -->
<div id="main">
<div id="main-block">
<div id="main-block2">
%PDF-1.2
%âãÏÓ
670 0 obj
Ich habe schon versucht das Template zu ändern auf ein minimales Template, wo zuerst die athorization geprüft wird und danach dann direkt das file kommt (ohne header). Und im Fehlerfalle kommt dann das Template mit ner Fehlermeldung raus.
Aber irgendwie tut das nicht.
Hat da wer ne idee?
Hallo clinden,
ich habe mir vor einiger Zeit (REX 3.2) für einen ähnlichen PDF-Download folgendes Template für die Downloadseite des PDF-Dokumentes geschrieben:
Ich weiß nicht, ob es das Thema genau trifft aber vielleicht klappt es ja. Bei mir funktioniert es jedenfalls. Das Einbinden des Authentifizierungs-Templates musst Du natürlich entsprechend an deine aktuelle Redaxo-Version anpassen.
Gruß
Peter
ich habe mir vor einiger Zeit (REX 3.2) für einen ähnlichen PDF-Download folgendes Template für die Downloadseite des PDF-Dokumentes geschrieben:
Code: Alles auswählen
<?php
// Template für eine Downloadseite um Dateien aus einem Verzeichnis
// ausserhalb des Documentroots herunterladen zu können
// Die Seite wir durch Einbindung des Authentifizierungs-Template geschützt
// Einzubindende Templates:
$authTemplateId = '2'; // Authentifizierungstemplate
// Authentifizierungs-Template einbinden
if($authTemplateId)
{
include $REX['INCLUDE_PATH']."/generated/templates/$authTemplateId.template";
}
print $this->getArticle(0);
?>
Gruß
Peter
Hi Peter,
ich habe Deine Version genommen und etwas abgewandelt.
Bei mir liegen die abzusichernden Daten übrigens im DOCROOT und in einem unterordner von files (nämlich /files/intern).
Um das ganze hinzubekommen mit dem Community-Builder benötigt man folgende Teile:
1. Es wird wie beschrieben ein Modul benötigt. In den Ausgabeteil des Moduls baut man nun den folgenden Code ein.
Dadurch wird der eigentliche Download durchgeführt. Nun muß man noch verhindern, daß das normale Template verwendet wird.
$file_name = preg_replace('/\?.*$/','',$_REQUEST["filename"]); verhindert im übrigen, daß filname=name.pdf?71,63 falsch ausgewertet wird. Bei der Verwendung von bestimmten Editoren kann es bei Einfgen eines Bilde daui kommen, daß eine Imagemap angehängt wird. Die wird hier dann einfach abgeschnitten, weil alles hinter dem eigentlich Filenamen wohl falsch sein muß.
2. Template anlegen:
Nun muß ein neues Template ohne nennenswerten Inhalt angelegt werden.
Als letzte benötigt man nun noch einen Artikel, der einerseits das Template verwendet, und andrerseits das Modul beinhaltet.[/code]
ich habe Deine Version genommen und etwas abgewandelt.
Bei mir liegen die abzusichernden Daten übrigens im DOCROOT und in einem unterordner von files (nämlich /files/intern).
Um das ganze hinzubekommen mit dem Community-Builder benötigt man folgende Teile:
1. Es wird wie beschrieben ein Modul benötigt. In den Ausgabeteil des Moduls baut man nun den folgenden Code ein.
Code: Alles auswählen
<?php
$file_name = preg_replace('/\?.*$/','',$_REQUEST["filename"]);
$file_path = $REX['INCLUDE_PATH'].'/../../files/intern/'.$file_name;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<base href="http://meine.domain.de/" />
<?
if ($fp = fopen ($file_path, "r"))
{
$file_type = "application/octetstream";
header("Expires: Mon, 2 Jan 2001 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// always modified
header("Cache-Control: no-store, no-cache, must-revalidate");// HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header('Content-Type: '.$file_type.'; name="'.$file_name.'"');
header('Content-Disposition: attachment; filename="'.$file_name.'"');
fpassthru ($fp);
fclose($fp);
}
?>
$file_name = preg_replace('/\?.*$/','',$_REQUEST["filename"]); verhindert im übrigen, daß filname=name.pdf?71,63 falsch ausgewertet wird. Bei der Verwendung von bestimmten Editoren kann es bei Einfgen eines Bilde daui kommen, daß eine Imagemap angehängt wird. Die wird hier dann einfach abgeschnitten, weil alles hinter dem eigentlich Filenamen wohl falsch sein muß.
2. Template anlegen:
Nun muß ein neues Template ohne nennenswerten Inhalt angelegt werden.
Code: Alles auswählen
<?php
error_reporting(E_ALL ^ E_NOTICE); // Notices ausschalten
// Authentifizierungs-Template einbinden
//include $REX['INCLUDE_PATH']."/generated/templates/9.template";
$authTemplate = new rex_template(10);
include $authTemplate->getFile();
if(rex_com_checkUserPerm($this->getValue("art_com_perm")))
{
print $this->getArticle();
}else
{
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<title><? print $REX['SERVERNAME'].' | '.$this->getValue("name"); ?></title>
<meta name="keywords" content="<?php print $meta_suchbegriffe; ?>" />
<meta name="description" content="<?php print $meta_beschreibung; ?>" />
<link rel="stylesheet" type="text/css" href="<? echo $REX['HTDOCS_PATH'] ?>files/main_1.css" media="screen" />
<?
//Weiterleiten auf Startseite
header('Location: http://'.$REX['SERVER'].'/index.php?article_id=79');
}
?>
Okay,
jetzt habe ich ein neues Problem.
Ich kann damit keine Dateien in einer Größe von mehr als 5MB herunterladen, weil die ganze Datei (mindestens einmal) gepuffert wird. Mein Webserver hat eine Memory Begrenzung von 33MB.
Ich bekomme die folgende Fehlermeldung, egal, ob ich nun fread oder fpassthru benutze:
Das heißt durch das verwendete Modul wird der ganze kram gecached und führt dann zum exhaust. Die Datei ist 10 MB groß, aber die sollten nicht vollständig gecached werden.
Ich habe schon alles versucht wie flush() oder ob_flush() zu verwenden, aber das bringt nichts.
Ich bin hier mit meinem Latein am Ende ... irgendwie bekomme ich den Filedownload so nicht hin. Ich muß aber die Dateien schützen, so daß sie nicht von jedem X-Beliebigen User heruntergeladen werden können
Hat da jemand ne Idee?[/b]
jetzt habe ich ein neues Problem.
Ich kann damit keine Dateien in einer Größe von mehr als 5MB herunterladen, weil die ganze Datei (mindestens einmal) gepuffert wird. Mein Webserver hat eine Memory Begrenzung von 33MB.
Ich bekomme die folgende Fehlermeldung, egal, ob ich nun fread oder fpassthru benutze:
Code: Alles auswählen
[b]Fatal error[/b]: Allowed memory size of 33554432 bytes exhausted (tried to allocate 10353322 bytes) in [b]/mnt/web7/32/14/51851314/htdocs/redaxo4/redaxo/include/functions/function_rex_extension.inc.php[/b] on line [b]162[/b]
Ich habe schon alles versucht wie flush() oder ob_flush() zu verwenden, aber das bringt nichts.
Ich bin hier mit meinem Latein am Ende ... irgendwie bekomme ich den Filedownload so nicht hin. Ich muß aber die Dateien schützen, so daß sie nicht von jedem X-Beliebigen User heruntergeladen werden können
Hat da jemand ne Idee?[/b]
Re:
dag hat geschrieben:Hallo Anne,
du kannst folgendermaßen vorgehen:
1. htaccess-Datei anlegen,
wie hier http://wiki.redaxo.de/index.php?n=R3.Dokuschutz beschrieben.
Es muß auch eine Datei leer.gif geben, die alternativ zum PDF angezeigt wird.
2. Im Redaxo-Backend ein Template erstellen, das nur den PHP-Code enthält, der in dem Wiki-Text angegeben ist.3. Einen Artikel im internen Bereich anlegen, dem dieses Template zugewiesen wird. Hier wird das ausgewählte PDF dann angezeigt bzw. zum Download angeboten.Code: Alles auswählen
<?php $file_name = $_REQUEST["filename"]; $file_path = $REX['INCLUDE_PATH'].'/../../files/'.$file_name; if ($fp = fopen ($file_path, "r")) { $file_type = "application/octetstream"; header("Expires: Mon, 2 Jan 2001 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// always modified header("Cache-Control: no-store, no-cache, must-revalidate");// HTTP/1.1 header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header('Content-Type: '.$file_type.'; name="'.$file_name.'"'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); fpassthru ($fp); fclose($fp); } ?>
4. Ich nehme an, die PDF's werden auf beliebigen internen Inhaltsseiten zum Download angeboten. Dort mußt du den Link so erstellen, dass er auf den Artikel von Punkt 3 verlinkt und der Dateiname angehängt wird, wie im Wiki beschrieben:Den Link muß du hinsichtlich article_id und Dateinamen noch entsprechend anpassen.Code: Alles auswählen
index.php?article_id=100&filename=myfile.pdf
5. Die PDF's können normal über den Medienpool hochgeladen werden.
Gruß
Dagmar
Hallo, ich habe diese Vorgehensweise soeben ausgetestet: funktioniert alles prima. Einzige Einschränkung: Wenn ich nun den link des Artikels und den Namen des pdfs kenne, (z.B. index.php?article_id=100&filename=myfile.pdf) kann ich ihn in meine Browserzeile einfügen und kann die Datei ganz ohne Anmeldung herunterladen.
- littledave
- Beiträge: 144
- Registriert: 25. Jan 2006, 14:04
- Wohnort: Coburg, Germany
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Hi,
der Code sieht etwas gefährlich aus.
z.B. man könnte wahrscheinlich mit diesem Aufruf die master.inc.php herunterladen:
index.php?article_id=100&filename=../redaxo/master.inc.php
lg
Dave
der Code sieht etwas gefährlich aus.
z.B. man könnte wahrscheinlich mit diesem Aufruf die master.inc.php herunterladen:
index.php?article_id=100&filename=../redaxo/master.inc.php
lg
Dave
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
ja, so seh ich das auch. steht so im Forum als "GELÖST". Und ich bin nicht grade das, was man einen php-Profi nennt. Also hab ich rumgetestet und bin darauf gestoßen, dass diese Vorgehensweise eben nicht sicher ist.
Ich brauche für einen Kunden einen sicheren internen Bereich - ein Archiv - wo der Kunde seine pdfs und word-Dateien hinterlegt, die absolut sicher sind. Wer kann mir eine Empfehlung geben? REX 4.2.1
Ich brauche für einen Kunden einen sicheren internen Bereich - ein Archiv - wo der Kunde seine pdfs und word-Dateien hinterlegt, die absolut sicher sind. Wer kann mir eine Empfehlung geben? REX 4.2.1
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Hallo Su,Wenn ich nun den link des Artikels und den Namen des pdfs kenne, (z.B. index.php?article_id=100&filename=myfile.pdf)
du mußt natürlich auch auf dieser Seite sicherstellen, dass sie nur im eingeloggten Zustand angezeigt wird. Darüber hinaus ist es sehr unwahrscheinlich, dass jemand, der nicht auf den internen Bereich Zugriff hat, exakt diese Adresse und den genauen Dateinamen kennt.
Code: Alles auswählen
z.B. man könnte wahrscheinlich mit diesem Aufruf die master.inc.php herunterladen:
nein, hier kommt eine Fehlermeldung, da der Pfad nicht stimmt.
Außerdem ist der Bereich /redaxo/include/... durch die .htaccess gesichert.
Und man sollte den übergebenen Dateinamen vor dem Aufruf filtern.
Schöne Grüße
Dagmar
- Gregor.Harlan
- Entwickler
- Beiträge: 1130
- Registriert: 4. Jun 2007, 10:35
- Wohnort: Frankfurt am Main
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Hallo Dagmar,dag hat geschrieben:nein, hier kommt eine Fehlermeldung, da der Pfad nicht stimmt.
Außerdem ist der Bereich /redaxo/include/... durch die .htaccess gesichert.
Und man sollte den übergebenen Dateinamen vor dem Aufruf filtern.
die Dateien im include-Ordner sind nur vor dem direkten Aufruf geschützt, den umgehst du aber ja gerade.
Mit &filename=../../redaxo/include/master.inc.php kann ich bei deinem oben geposteten Code die master.inc.php herunterladen.
Gruß, Gregor
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Hallo Dagmar, im entsprechenden Artikel ist der Teil 2 des Moduls enthalten. Trotzdem schaffe ich es, das pdf ohne Passwort runterzuladen. Und Link kennen oder nicht. Die betreffenden Files sind unter Beobachtung durch Wettbewerb und Abmahner. Es muss also absolut sicher sein ... ich versuche das Community-Addon. Wird aber ein paar Tage dauern. Werde das Ergebnis posten.
Hallo Gregor, ja. Funktioniert genau, wie du beschreibst. Es wird umgangen.
Hallo Dave, danke für Deine Hilfe.
Hallo Gregor, ja. Funktioniert genau, wie du beschreibst. Es wird umgangen.
Hallo Dave, danke für Deine Hilfe.
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Hallo su,
ich habe diese Beschreibung nicht geschrieben. Ich weise nur darauf hin, dass man bei Verwendung dieses Codes auch sicherstellen muß, dass die entsprechende Seite nur einem eingeloggten Besucher zugänglich sein darf.
Schöne Grüße
Dagmar
ich habe diese Beschreibung nicht geschrieben. Ich weise nur darauf hin, dass man bei Verwendung dieses Codes auch sicherstellen muß, dass die entsprechende Seite nur einem eingeloggten Besucher zugänglich sein darf.
Schöne Grüße
Dagmar
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Code: Alles auswählen
die Dateien im include-Ordner sind nur vor dem direkten Aufruf geschützt, den umgehst du aber ja gerade. Mit &filename=../../redaxo/include/master.inc.php kann ich bei deinem oben geposteten Code die master.inc.php herunterladen.
der Code stammt aus dem Redaxo-Wiki (s. http://wiki.redaxo.de/index.php?n=R3.Dokuschutz). Ich habe nur darauf Bezug genommen. Möglicherweise müßte er aufgrund dieser Diskussion erweitert werden. Insofern ist die Diskussion sicherlich sinnvoll. Wie bereits gesagt, man muß die übergebenen Daten überprüfen und selbst wenn man dies ausschaltet, erhalte ich immer noch eine Fehlermeldung statt der Ausgabe der master.inc.php.
Schöne Grüße
Dagmar
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Schon klar, dass du das nicht geschrieben hast. Bitte, nichts für ungut ...
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Hallo su,
deine Hinweise sind gut und sinnvoll. Vielleicht sollte man im Wiki noch auf die weitergehenden Sicherheitsaspekte verweisen. Gelöst werden müssen sie, denke ich, jeweils individuell.
Viele Grüße
Dagmar
deine Hinweise sind gut und sinnvoll. Vielleicht sollte man im Wiki noch auf die weitergehenden Sicherheitsaspekte verweisen. Gelöst werden müssen sie, denke ich, jeweils individuell.
Viele Grüße
Dagmar
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Wobei man an der Stelle doch anmerken sollte, daß eine solche Überprüfung dann auch wirklich wasserdicht sein müßte.. und das ist angesichts der Möglichkeiten was unterzuschieben garnicht so trivial. Alternativ sollte man das Konzept dahingehend überdenken, daß man den user input abstrahiert, und z.b. lediglich eine ID - z.b. die Medienpool file_id - übergibt. Darüber läßt sich einfach und sicher eine eingegrenzte und saubere Zuordnung herstellen..dag hat geschrieben:..Insofern ist die Diskussion sicherlich sinnvoll. Wie bereits gesagt, man muß die übergebenen Daten überprüfen ..
lg,
j.
vg, Jan
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Hallo Jan,und z.b. lediglich eine ID - z.b. die Medienpool file_id - übergibt
das ist eine gute Idee. Setzt dann voraus, dass die Dateien nicht in einem gesonderten Ordner liegen.
VG
Dagmar
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Nein, nicht zwingend.. aber Wege zum Ziel gibts da ziemlich viele, je nach Anforderung & erlaubtem Aufwand. Mir ging es - weil ich vor kurzem selbst einen solchen sec lapsus in ein plugin gestrickt hatte - darum nochmal auf die Thematik hinzuweisen. Man hat halt - froh was gestrickt hat das überhaupt mal funktioniert - schnell unbedacht Scheunentore für exploits geschaffen.. und selbst wenn man meint alles hinreichend bedacht und abgesichert zu haben, grinst einen das böse weite Internet nur hämisch an.. ;-)dag hat geschrieben:Setzt dann voraus, dass die Dateien nicht in einem gesonderten Ordner liegen.
lg,
Jan
vg, Jan
Re: GELÖST: Dokument im Medienpool mit PW-Schutz
Das ist leider wahr. . Absolute Sicherheit gibt es hier nicht.und selbst wenn man meint alles hinreichend bedacht und abgesichert zu haben, grinst einen das böse weite Internet nur hämisch an..
VG
Dagmar
Re: Dokument im Medienpool mit PW-Schutz
Hallo,
ich sitze auch gerade an einem Projekt welches Dateidownload mit geschützten PDF-Dateien beinhaltet. Ich hatte auch das Problem, dass man die master.inc.php herunterladen konnte.
Mit diesem Script kann ich jetzt nur noch pdf Dateien herunter laden.
Da ich kein PHP Profi bin, wäre ich über Feedback dankbar.
Das Script stammt von: http://www.selfphp.info/kochbuch/kochbuch.php?code=37
Grüße
ich sitze auch gerade an einem Projekt welches Dateidownload mit geschützten PDF-Dateien beinhaltet. Ich hatte auch das Problem, dass man die master.inc.php herunterladen konnte.
Mit diesem Script kann ich jetzt nur noch pdf Dateien herunter laden.
Da ich kein PHP Profi bin, wäre ich über Feedback dankbar.
Code: Alles auswählen
<?php
function makeDownload($file, $dir, $type)
{
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($dir.$file);
}
$dir = './files/';
$type = 'application/pdf';
$downloadFile = str_replace("../", "",$_GET['filename']);
if(!empty($downloadFile) && !preg_match('=/=', $downloadFile)) {
if(file_exists ($dir.$downloadFile)) {
makeDownload($downloadFile, $dir, $type);
}
}
?>
Grüße
- Markus.Lorch
- Beiträge: 682
- Registriert: 21. Okt 2007, 17:22
- Wohnort: Walheim
Re: Dokument im Medienpool mit PW-Schutz
Fals noch jemand nen anderen Lösungsansatz sucht:
Ich habs in Kombination mit dem Community-AddOn - Meta-Feld für die Medien: wenn gesetzt -> Passwortschutz. Mit Dateien die es dann im Medienpool gar nicht gibt, gehts dann natürlich auch nicht
Ich habs in Kombination mit dem Community-AddOn - Meta-Feld für die Medien: wenn gesetzt -> Passwortschutz. Mit Dateien die es dann im Medienpool gar nicht gibt, gehts dann natürlich auch nicht
Grüße,
Markus Lorch
Tschüssle sagt Herr Nüssle
Markus Lorch
Tschüssle sagt Herr Nüssle
Re: Dokument im Medienpool mit PW-Schutz
Hallo zusammen,
@Markus.Lorch,
das ist keine Lösung, da alle Dateien im files vom normalen Browser heruntergeladen werden können. Das genau muß aber in jedem Fall verhindert werden. Daher gibt es eben ein separates Verzeichnis in dem durch .htaccess verboten wird irgendwas herunterzuladen.
Okay, ich habe nun auch eine Lösung für das Problem gefunden, die für meinen Fall recht einfach ist:
Hier der Code:
Der kritische Teil ist diese Zeile:
$file_name = basename(preg_replace('/\?.*$/','',$_REQUEST["filename"]));
Hier wird einfach alles außer dem eigentlich Filenamen abgeschnitten. Das heißt: egal, was der Böse Angreifer mal angegeben hat, es bleibt nur der Filename über.
Beispiel:
Der Angreifer hat filename=../../redaxo/include/master.inc.php angegeben.
Dann wird in die Variable $file_name=basename(../../redaxo/include/master.inc.php) eingelesen, was dann $file_name=master.inc.php ergibt.
Danach wird weiter unten geprüft, ob es die Datei gibt, wobei dann wieder der /files/intern Pfad aus Redaxo Sicht angefügt wird. Es wird dann also geprüft, ob das File /files/intern/master.inc.php existiert.
Da es in meinem Fall nicht existiert wird stattdessen auf eine Fehlerseite umgeleitet.
Das könnt Ihr natürlich beliebig abändern, wie Ihr möchtet.
Dadurch sollte ein derartiges SIcherheitsrisiko behoben sein.
Vielen Dank für die Information, das war mir nicht aufgefallen ...
BTW: Kann jemand das Wiki anpassen? Das ist eine einfache Lösung und müsste halt auch dort angepasst werden. Leider kann ich das nicht machen, weil ein Passwort benötigt wird. ?? Ich hätte mal gedacht, mein User reicht dazu.
@Markus.Lorch,
das ist keine Lösung, da alle Dateien im files vom normalen Browser heruntergeladen werden können. Das genau muß aber in jedem Fall verhindert werden. Daher gibt es eben ein separates Verzeichnis in dem durch .htaccess verboten wird irgendwas herunterzuladen.
Okay, ich habe nun auch eine Lösung für das Problem gefunden, die für meinen Fall recht einfach ist:
Hier der Code:
Code: Alles auswählen
<?php
$file_name = basename(preg_replace('/\?.*$/','',$_REQUEST["filename"]));
$file_path = $REX['INCLUDE_PATH'].'/../../files/intern/'.$file_name;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<?
if ($file= fopen($file_path, 'rb' )) {
$file_type = "application/octetstream";
header("Cache-Control: ");
header("Pragma: ");
header("Content-Length: ".(string)(filesize($file_path)) );
header('Content-Type: '.$file_type.'; name="'.$file_name.'"');
header('Content-Disposition: attachment; filename="'.$file_name.'"');
// readfile($file_path);
fpassthru($file);
fclose($file);
} else {
// file gibt es scheinbar nicht, also Fehlerseite ausgeben.
?>
<meta http-equiv="refresh" content="5; URL=http://www.meine-seite.de/23-0-Fehler.htm">
<?
}
?>
</head>
$file_name = basename(preg_replace('/\?.*$/','',$_REQUEST["filename"]));
Hier wird einfach alles außer dem eigentlich Filenamen abgeschnitten. Das heißt: egal, was der Böse Angreifer mal angegeben hat, es bleibt nur der Filename über.
Beispiel:
Der Angreifer hat filename=../../redaxo/include/master.inc.php angegeben.
Dann wird in die Variable $file_name=basename(../../redaxo/include/master.inc.php) eingelesen, was dann $file_name=master.inc.php ergibt.
Danach wird weiter unten geprüft, ob es die Datei gibt, wobei dann wieder der /files/intern Pfad aus Redaxo Sicht angefügt wird. Es wird dann also geprüft, ob das File /files/intern/master.inc.php existiert.
Da es in meinem Fall nicht existiert wird stattdessen auf eine Fehlerseite umgeleitet.
Das könnt Ihr natürlich beliebig abändern, wie Ihr möchtet.
Dadurch sollte ein derartiges SIcherheitsrisiko behoben sein.
Vielen Dank für die Information, das war mir nicht aufgefallen ...
BTW: Kann jemand das Wiki anpassen? Das ist eine einfache Lösung und müsste halt auch dort angepasst werden. Leider kann ich das nicht machen, weil ein Passwort benötigt wird. ?? Ich hätte mal gedacht, mein User reicht dazu.