Verschlüsselter Download-Link

proloser

Erfahrenes Mitglied
Ich möchte meinen Kunden nach erfolgreicher Zahlung, automatisch einen Download-Link schicken. Der Link soll aber nur 24 Stunden gültig sein.

Funktionieren würde es, wenn ich im Link den Timestamp und ein md5 verschlüsselter Code mitschicke.

Gibt es noch andere Möglichkeiten, damit ich den Timestamp im Link nicht benötige?

Gruß proloser
 
Spontan würde mir einfallen: timestamp + code in einer datenbank hinterlegen und code als parameter mitgeben "download.php?code=12345" anhand des codes kannst du dir den timestamp aus der db lesen und damit rechnen

Gruß aus Karlsruhe,

hsstw
 
Das würde auch funktionieren aber ich möchte es ohne Datenbank machen. Mir fällt gerade ein, ich könnte unter den Timestamp Buchstaben "vermischen" (1312546515 => 13CG12X54OJ65LB15) und zum prüfen nur die Zahlen auslesen.

Vielleicht fällt jemandem noch was besseres ein... :)
 
Wie willst du das denn mit dem Timestamp machen? Wenn du den an die Url als md5 hängst kannst du nicht auf den Timestamp zurück schließen(Brute Force geht aber dann mal viel Spaß) und damit hast du keine Chance den Timestamp zu erhalten. Md5 geht also an der Stelle nicht.

Du musst dir ein Crypt Verfahren suchen das kein Hash Verfahren ist. Am einfachsten wäre ein Caesar. Aber ich denke das wird zu aufwendig.

Dir wird nix anderes bleiben als einen Code zu generieren der Eindeutig ist. Dazu würde ich md5(Timestamp * SessionId) benutzten. Wenn du keine DB nutzen willst, speicher das ganze einfach in ein XML oder anderen Datei mit der du arbeiten willst.

mfg
 
Klar funktioniert es mit md5 und Timestamp. So wie es aussieht muss ich es auch so machen:

Link Generieren:
Code:
$download_link = "http://example.com/download.php?code=" . md5("123abc" . strtotime("+ 24 Hours")) . "-" . strtotime("+ 24 Hours")


Download:
Code:
$explode = explode('-', $_GET['code']);

$get_seal = $explode[0];
$get_timestamp = $explode[1];


$seal = md5("123abc" . $get_timestamp);

if($seal == $get_seal) {
	
	if(time() < $get_timestamp) {

		echo "Download kann beginnen!";
		
	} else {
		echo "Der Download-Link ist abgelaufen!";
	}
	
} else {
	echo "Der Download-Link wurde manipuliert!";
}
 
Zuletzt bearbeitet:
Zurück