Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Seite nur über bestimmte Referrerseite zugänglich machen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
catcat
PostRank 10
PostRank 10
Beiträge: 10292
Registriert: 02.08.2006, 13:21
Wohnort: Litauen

Beitrag von catcat » 04.12.2007, 16:20

Ich möchte downloads anbieten (200kb - 5MB Größe), mit cash-by-call, cash-by-sms und cash-by-handy. Also der Anrufer ruft ne kostenpflichtige Nummer an und bekommt ne PIN oder ein Passwort zugeschickt. Die gibt er bei mir auf der Seite an und dann kann ich ihn:
a. Mit PIN oder Passwort: automatisch weiterleiten
b. Mit PIN: ne Email mit downloadlink schicken

Und mein Problemchen:
Wenn ich ihn in einen Memberbereich weiterleite, wo er downloaden kann und er dann auch das File downloadet, dann hat er ja den Downloadlink. Wie kann ich verhindern, das dieser Link einfach weitergegeben wird?

Wie kann ich verhindern, das der Link in der Email weitergegeben wird und mehrfach genutzt wird?

Kann ich "irgendwie" festlegen, das auf meinen Downloadordner nur zugegriffen wird, wenn zuvor z.B. die memberseite.htm besucht wurde (wo man ja nur hinkommt, über die Eingabe eines Passworts)?

ich habe heut ne akute Denkblockade...

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Fox Mulder
PostRank 8
PostRank 8
Beiträge: 804
Registriert: 16.11.2004, 09:06

Beitrag von Fox Mulder » 04.12.2007, 19:50

Schalte Dir vor das Downloadziel eine Weiterleitungseite, auf die Du verlinkst und in der Du auf $_SERVER['HTTP_REFERER'] prüfts. Ohne richtigen Referer kein Download.
Nebenbei kannst du hier das Ziel auch noch verschleiern.

Gruss

wolli
PostRank 9
PostRank 9
Beiträge: 1395
Registriert: 01.01.2006, 18:48

Beitrag von wolli » 04.12.2007, 19:54

@$_SERVER['HTTP_REFERER']
sind easy manipulierbar und deshalb ungeeignet

nette Grüße
wolli

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

catcat
PostRank 10
PostRank 10
Beiträge: 10292
Registriert: 02.08.2006, 13:21
Wohnort: Litauen

Beitrag von catcat » 04.12.2007, 20:13

Ebent! Und was mach ich mit Leuten, die nem Webwasher oder Browser mit aktiviertem "No-URL-Referrer" unterwegs sind? :(

Thies
PostRank 3
PostRank 3
Beiträge: 98
Registriert: 16.03.2006, 15:16
Wohnort: Stadtilm

Beitrag von Thies » 04.12.2007, 20:56

Hi,

per PHP kann man das m.E. lösen. Anbei eine function, die ich mal irgendwo im Web gefunden und für meine Bedürfnisse angepasst hatte:

Code: Alles auswählen

function send_file_to_browser($filename_save, $mimetype, $dl_link, $dl_dir)
	{
	global $HTTP_USER_AGENT, $HTTP_SERVER_VARS;

	$filename = ($dl_dir == '') ? $dl_link : $dl_dir . $dl_link;
	$file_check = @fopen($filename, 'rb');

	if ($file_check)
		{ fclose($file_check); $check_ok = TRUE; }
	else
		{ $check_ok = FALSE; }

	//
	// Determine the Browser the User is using, because of some nasty incompatibilities.
	// Most of the methods used in this function are from phpMyAdmin. :)
	//
	if (!empty($_SERVER['HTTP_USER_AGENT'])) 
		{ $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];} 
	else if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) 
		{ $HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT']; }
	else if (!isset($HTTP_USER_AGENT))
		{ $HTTP_USER_AGENT = '';}

	if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) 
		{ $browser_version = $log_version[2]; $browser_agent = 'opera';} 

	else if (ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) 
		{ $browser_version = $log_version[1]; $browser_agent = 'ie'; } 

	else if (ereg('OmniWeb/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) 
		{ $browser_version = $log_version[1]; $browser_agent = 'omniweb'; } 

	else if (ereg('Netscape([0-9]{1})', $HTTP_USER_AGENT, $log_version)) 
		{ $browser_version = $log_version[1]; $browser_agent = 'netscape'; } 

	else if (ereg('Mozilla/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) 
		{ $browser_version = $log_version[1]; $browser_agent = 'mozilla'; } 

	else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) 
		{ $browser_version = $log_version[1]; $browser_agent = 'konqueror'; } 
	else 
		{ $browser_version = 0; $browser_agent = 'other'; }

	/*
	// Correct the mime type - we force application/octetstream for all files, except images
	// Please do not change this, it is a security precaution
	if (!strstr($mimetype, 'image'))
		{ $mimetype = ($browser_agent == 'ie' || $browser_agent == 'opera') ? 'application/octetstream' : 'application/octet-stream'; }
	*/

	//
	// Correct the Mime Type, if it's an octetstream
	//
	if ( ($mimetype == 'application/octet-stream') || ($mimetype == 'application/octetstream') )
		{
		if ( ($browser_agent == 'ie') || ($browser_agent == 'opera') )
			{ $mimetype = 'application/octetstream'; }
		else
			{ $mimetype = 'application/octet-stream'; }
		}

	//
	// Now send the File Contents to the Browser
	//

	if ($check_ok)
		{ 
		//
		// Send out the Headers
		//

		@ob_end_clean();
		@ini_set('zlib.output_compression', 'Off');
		header('Pragma: public');
		header('Content-Transfer-Encoding: none');

		// Send out the Headers
		header('Content-Type: ' . $mimetype . '; name="' . $filename_save . '"');
		header('Content-Disposition: inline; filename="' . $filename_save . '"');

		$size = @filesize($filename);
		if ($size)
			{
			header("Content-length: $size");
			}

		@readfile($filename); 
		}
	else
		{
		// Fehlerausgabe
		}
	exit();
	}
Mit der function wird der Download nämlich nicht als Link ausgegeben sondern direkt zum Download bereitgestellt, ohne dass der User nach meinem Kenntnisstand überhaupt eine Chance hat, den Downloadlink zu erfahren.

Du müsstest vor dem Aufruf der function den entsprechenden MIME-Typ übergeben (habe ich bei mir gleich beim Anlegen des Files in die DB eingetragen) und Du kannst vor dem Aufruf prüfen, ob der User überhaupt berechtigt ist. z.B. bei der PIN-Abfrage die IP in einer DB hinterlegen und prüfen, ob die IP desjenigen, der den Link aufruft, mit der in der DB identisch ist.

Aber: diese function solltest Du nur nutzen, wenn Du auf einem eigenen und sehr gute Server bist, denn die Datei wird eingelesen und dann an den User übertragen. Das kostet Performance.

Wenn Du mehr Infos brauchst, melde Dich bei mir.

CU

Frank-Andre

catcat
PostRank 10
PostRank 10
Beiträge: 10292
Registriert: 02.08.2006, 13:21
Wohnort: Litauen

Beitrag von catcat » 04.12.2007, 21:41

Super! ich werd mir das mal einsickern lassen, wenn ich wieder nüchtern bin :D
Danke!

Thies
PostRank 3
PostRank 3
Beiträge: 98
Registriert: 16.03.2006, 15:16
Wohnort: Stadtilm

Beitrag von Thies » 05.12.2007, 09:11

Auf php.net gibt es auch einen guten Lösungshinweis, insbesondere, wenn der MIME-Typ vorher nicht bekannt ist: https://de2.php.net/manual/de/function. ... .php#56109

CU

Frank-Andre

Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 06.12.2007, 16:03

Wenn Du readfile benutzt, kannst Du das Verzeichnis in dem die Dateien liegen auch mit ner .htaccess und "Deny from all" sperren, dann ist es egal, ob der Link bekannt wird. Nach dem Download läßt man den PIN verfallen und gut ist. Etwas Feintuning für abgebrochene Downloads wird schon schwieriger.

catcat
PostRank 10
PostRank 10
Beiträge: 10292
Registriert: 02.08.2006, 13:21
Wohnort: Litauen

Beitrag von catcat » 07.12.2007, 20:43

Danke hasenhuf! Das is die Lösung!
Glaube ich... :D

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag