einmal-codes generieren und wiedererkennen fuer webdownloads



  • hallo!

    es geht darum jemandem einen code zu geben, mit dem derjenige auf einer webseite einmalig einen download starten kann. ihr kennt das wahrscheinlich von irgendwelchen getraenkeflaschen im deckel oder aehnlichem.

    nun koennte man einfach 5000 codes auf der webseite hinterlegen und nach benutzung loeschen/markieren. es waere aber schoener 'beliebig' viele codes erstellen zu koennen und da suche ich ein geeignetes verfahren.
    ich brauche also einen generator und einen 'erkenner'. wenn der erkenner einen validen code bekommt, erlaubt er den download und merkt sich den code als verbraucht.

    wie koennte ich das implementieren. gibt es ein schlaues verfahren aus der mathematik oder kryptographie, mit dem ich hier weiter komme?

    danke und gruesse



  • es waere aber schoener 'beliebig' viele codes erstellen zu koennen und da suche ich ein geeignetes verfahren.

    Generiere eine Liste von Zufallszahlen und hinterlege sie in einer Datenbank mit dem Vermerk, ob sie gueltig sind.



  • schrieb ich nicht, dass ich das nicht will?!
    ich moechte wissen, ob es auch so geht, wie beschrieben.



  • el generator schrieb:

    schrieb ich nicht, dass ich das nicht will?!
    ich moechte wissen, ob es auch so geht, wie beschrieben.

    Das sollte zum Beispiel mit HMAC funktionieren.

    Du könntest z.B. einen String von n Bits zufällig generieren, nenne ihn x. Dann berechnest du y = HMAC(x, secret_key). Für HMAC gibt es fertige Funktionen, die genau diese beiden Parameter erwarten. Dann verkettest du x und y, kodierst das ganze so, dass Buchstaben und Zahlen rauskommen, und nimmst das als Code.

    Wenn es nicht sonderlich sicher sein muss, kannst du einfach x kurz genug wählen und y einfach abschneiden, sodass der Code am Ende die gewünschte Länge hat.

    Wenn du einen zufällig generierten secret_key und eine fertige HMAC-Funktion nimmst, die auf sha1 oder ähnlichem basiert (und nicht versuchst, aus einer normalen sha1-Funktion selber eine HMAC-Funktion zu machen) und du außerdem y nicht abschneidest, sollte das ziemlich sicher sein.

    Wenn du y abschneidest, um die Länge des Codes klein zu halten, wird es natürlich entsprechend unsicherer.

    Aber generell gilt natürlich: Einen einzigen Download zulassen würde ich nicht, denn da werden sich Kunden definitiv beschweren. Downloads können nämlich mittendrin abbrechen. Besser wäre vielleicht, dass man mit einem Key einen Downloadlink bekommt, der für ein paar Stunden gültig ist. Man kann so oft runterladen wie man möchte, aber nach ein paar Stunden wird der Link einfach ungültig. Ich denke, dass man damit viel kundenfreundlicher ist und trotzdem sein Ziel erreicht, dass ein Code nur einmal genutzt werden kann.



  • vielen dank, das klingt vielversprechend! ich werde es mir genauer anschauen.

    Christoph schrieb:

    Aber generell gilt natürlich: Einen einzigen Download zulassen würde ich nicht, denn da werden sich Kunden definitiv beschweren. Downloads können nämlich mittendrin abbrechen. Besser wäre vielleicht, dass man mit einem Key einen Downloadlink bekommt, der für ein paar Stunden gültig ist. Man kann so oft runterladen wie man möchte, aber nach ein paar Stunden wird der Link einfach ungültig. Ich denke, dass man damit viel kundenfreundlicher ist und trotzdem sein Ziel erreicht, dass ein Code nur einmal genutzt werden kann.

    da hast du vollkommen recht und ich hatte das bereits beruecksichtigt.
    besonders hohe ansprueche an die sicherheit gibt es im uebrigen nicht. der finanzielle schaden durch mehrfachdownloads ist ueberschaubar, falls es ueberhaupt einen gibt.

    noch mal danke!


Anmelden zum Antworten