Seite 1 von 1
Download Schutz!
Verfasst: 11.08.2003 14:33
von Cooper2201
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
Verfasst: 11.08.2003 16:17
von JumpinJack
Naja wie willst du denn die Donloads bereit stellen? MIt dem DL-Mod von Hotchi?
Wenn ja dann gib die Downloads nur mit Trafficbegrenzung frei.
Download Schutz!
Verfasst: 11.08.2003 16:29
von Cooper2201
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
Verfasst: 11.08.2003 17:03
von Gast200921
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.
Download Schutz
Verfasst: 11.08.2003 17:11
von Cooper2201
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);
}
}
?>
Verfasst: 11.08.2003 17:40
von Dennis63
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:
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');
}
}
?>
Ok nochmal: obiges nur als "Idee" und ohne Garantie, da es "nur so getippt" ist!!
Grüße
Dennis