Hi,
folgende Frage:
Ich habe direkt auf meinem Server auf oberster Ebene das Board installiert und möchte eine Verzeichnisschutz in Php erstellen, so dass nur registrierte Benutzer auf die Downloads zugreifen können. Im Moment kann jeder, der den direkten Link kennt per Browser downloaden, ohne das geprüft wird, ob der Benutzer eingeloggt ist oder nicht.
Hat jemand ne Idee?
Gruß
Cooper
Download Schutz!
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
- Cooper2201
- Mitglied
- Beiträge: 20
- Registriert: 23.08.2002 15:53
- Wohnort: Rodgau
Download Schutz!
Nichts ist so wie es scheint
- JumpinJack
- Mitglied
- Beiträge: 953
- Registriert: 27.05.2002 10:37
- Wohnort: Ariendorf
- Kontaktdaten:
- Cooper2201
- Mitglied
- Beiträge: 20
- Registriert: 23.08.2002 15:53
- Wohnort: Rodgau
Download Schutz!
Hi,
also die Downloadlinks sind momentan direkt hinter im einem Topic eingbunden, d.h. hinter einem Text verbirgt sich der Link, nur wenn sich den Link anzeigen lässt und sich die Adresse bookmarkt, dann kann jeder der diesen Link hat auf die Datei zugreifen, auch wenn ein Benutzer nicht eingeloggt ist.
Ich möchte aber, das man nur den Link aufrufen kann wenn man eingeloggt ist und ansonsten eine Fehlermeldung erscheint.
Gruß
Cooper
also die Downloadlinks sind momentan direkt hinter im einem Topic eingbunden, d.h. hinter einem Text verbirgt sich der Link, nur wenn sich den Link anzeigen lässt und sich die Adresse bookmarkt, dann kann jeder der diesen Link hat auf die Datei zugreifen, auch wenn ein Benutzer nicht eingeloggt ist.
Ich möchte aber, das man nur den Link aufrufen kann wenn man eingeloggt ist und ansonsten eine Fehlermeldung erscheint.
Gruß
Cooper
Nichts ist so wie es scheint
Hallo Cooper,
eine wirklich 'wasserdichte' Lösung wirst Du est dann haben, wenn Du die Downloads beispielsweise per PHP-Script verschickst, also keine direkten Links mehr zulässt. Download- oder Attachment-Mods können hier Abhilfe schaffen.
Wenn Du aber eine schnelle Lösung brauchst, dann kannst Du das Verzeichnis, in welchem die fraglichen Dateien liegen, per .htacceess derart schützen, daß Downloads nur noch möglich sind, wenn der Link von Deiner Seite kommt. Diese Variante hat allerdings mindestens einen großen Haken: Manche Addons für Browser [oder auch Firewalls] blockieren die Referrer-Angabe. Solche User könnten bei Dir dann gar nichts mehr herunterladen.
Die Variante mit der .htaccess-Datei kann also nicht mehr als eine Notlösung sein, dafür ist sie aber auch in weniger 50 Sekunden installiert. Für nähere Infos würde ich Dir raten, mal mit Google nach '.htaccess' und 'referrer' zu suchen.
eine wirklich 'wasserdichte' Lösung wirst Du est dann haben, wenn Du die Downloads beispielsweise per PHP-Script verschickst, also keine direkten Links mehr zulässt. Download- oder Attachment-Mods können hier Abhilfe schaffen.
Wenn Du aber eine schnelle Lösung brauchst, dann kannst Du das Verzeichnis, in welchem die fraglichen Dateien liegen, per .htacceess derart schützen, daß Downloads nur noch möglich sind, wenn der Link von Deiner Seite kommt. Diese Variante hat allerdings mindestens einen großen Haken: Manche Addons für Browser [oder auch Firewalls] blockieren die Referrer-Angabe. Solche User könnten bei Dir dann gar nichts mehr herunterladen.
Die Variante mit der .htaccess-Datei kann also nicht mehr als eine Notlösung sein, dafür ist sie aber auch in weniger 50 Sekunden installiert. Für nähere Infos würde ich Dir raten, mal mit Google nach '.htaccess' und 'referrer' zu suchen.
- Cooper2201
- Mitglied
- Beiträge: 20
- Registriert: 23.08.2002 15:53
- Wohnort: Rodgau
Download Schutz
Hi,
hatte schon was in php geschrieben, funktioniert aber nur wenn die Dateien direkt im demselben Verzeichnis liegen wie die index.php.
Sobald ich auf ein anderes Verzeichnis verweise funktioniert die ganze Geschichte nicht mehr.
htaccess wollte ich eigentlich vermeiden.
Anbei mal die Source:
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip,0);
init_userprefs($userdata);
//
// End session management
//
//
// Start auth check
//
$is_auth = array();
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row);
//if ( !$is_auth['auth_read'] || !$is_auth['auth_view'] )
//or just as long as they are loged in
if(!$userdata['session_logged_in'] )
{
//
// The user is not authed ...
//
// for different languages these values can be set or..
//$message = sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']);
$message = "You must be logged in to download files";
message_die(GENERAL_MESSAGE, $message);
}
//
// End of auth check
//
else
{
$f_file = "/stuff/". $_GET['file'];
if(file_exists($f_file)){
$filesize = filesize($f_file);
if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')){
// for IE
header("Cache-Control: public");
}
header("Content-Type:application/octet-stream");
header("Content-disposition:attachment;filename=". $_GET['file']);
header("Content-Length: " . $filesize);
readfile($f_file);
header("Location: " . add_sid("index.php"));
}
else
{
$message = "File does not exist";
message_die(GENERAL_MESSAGE,$message);
}
}
?>
hatte schon was in php geschrieben, funktioniert aber nur wenn die Dateien direkt im demselben Verzeichnis liegen wie die index.php.
Sobald ich auf ein anderes Verzeichnis verweise funktioniert die ganze Geschichte nicht mehr.
htaccess wollte ich eigentlich vermeiden.
Anbei mal die Source:
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip,0);
init_userprefs($userdata);
//
// End session management
//
//
// Start auth check
//
$is_auth = array();
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row);
//if ( !$is_auth['auth_read'] || !$is_auth['auth_view'] )
//or just as long as they are loged in
if(!$userdata['session_logged_in'] )
{
//
// The user is not authed ...
//
// for different languages these values can be set or..
//$message = sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']);
$message = "You must be logged in to download files";
message_die(GENERAL_MESSAGE, $message);
}
//
// End of auth check
//
else
{
$f_file = "/stuff/". $_GET['file'];
if(file_exists($f_file)){
$filesize = filesize($f_file);
if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')){
// for IE
header("Cache-Control: public");
}
header("Content-Type:application/octet-stream");
header("Content-disposition:attachment;filename=". $_GET['file']);
header("Content-Length: " . $filesize);
readfile($f_file);
header("Location: " . add_sid("index.php"));
}
else
{
$message = "File does not exist";
message_die(GENERAL_MESSAGE,$message);
}
}
?>
Nichts ist so wie es scheint
Hi
Auf meiner PAge (boegesoft.de) ist ein PHP-Download-Script. Du kannst an das Script ganz einfach den Pfad + Dateinamen schicken und es lädt Dir das File runter. Die Files können dann auch in htaccess geschützen Bereichen liegen, das macht nix.
Dann braucht Du noch ein Script welches Dir prüft, ob Du eingeloggt bist und welches File Du saugen darfst:
ganz einfach (Nur so getippt, nicht auf Fehler getestet oder überhaupt mal ausprobiert:
Ok nochmal: obiges nur als "Idee" und ohne Garantie, da es "nur so getippt" ist!!
Grüße
Dennis
Auf meiner PAge (boegesoft.de) ist ein PHP-Download-Script. Du kannst an das Script ganz einfach den Pfad + Dateinamen schicken und es lädt Dir das File runter. Die Files können dann auch in htaccess geschützen Bereichen liegen, das macht nix.
Dann braucht Du noch ein Script welches Dir prüft, ob Du eingeloggt bist und welches File Du saugen darfst:
ganz einfach (Nur so getippt, nicht auf Fehler getestet oder überhaupt mal ausprobiert:
Code: Alles auswählen
<?
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
if ( $userdata['session_logged_in'] )
{
// allow download
$id = ( !empty($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id'];
if ($id = "1") $yourfile = "file1.exe";
if ($id = "2") $yourfile = "file2.exe";
if ($id = "3") $yourfile = "file3.exe";
$attach_filename = $yourfile;
$attach_path = $ausg_dl_path;
include('includes/download_file.php');
}
}
?>
Grüße
Dennis