Controle naam bij cijfers

Status
Niet open voor verdere reacties.

bartwebdesign

Gebruiker
Lid geworden
16 jul 2006
Berichten
443
Ik ben aan het zoeken naar een script, dat controleert of een bepaalde naam bij een bepaalde serialcode hoort.

Dus als ik een serialcode genereer van bijv.
bartwebdesign, dat er dan ongeveer komt te staan
xxxxx-xxxxx-xxxxx-xxxxx. (x = een cijfer)

Wie weet een script?
 
Ik ben aan het zoeken naar een script, dat controleert of een bepaalde naam bij een bepaalde serialcode hoort.

Dus als ik een serialcode genereer van bijv.
bartwebdesign, dat er dan ongeveer komt te staan
xxxxx-xxxxx-xxxxx-xxxxx. (x = een cijfer)

Wie weet een script?

Een heel simpele oplossing is

PHP:
function genSerial($string)
{
     $sign = 'mySecretSign';
     $hash = sha1($string . $sign);
     for($i = 0; $i < 4; $i++)
     {
             $serialPart[] = substr($hash, $i * 5, 5);
     }
      return implode('-', $serialPart);
}

$serial = genSerial('bartwebdesign');

Vervang mySecretSign in een geheime code.

Op deze manier krijg je een serial van cijfers en letters ik hoop dat je dat niet erg vind.
 
En hoe wil je die gaan controleren?

Je kunt moeilijk even een connectie naar de "main-database" maken om te kijken of die key wel geldig is.
 
En hoe wil je die gaan controleren?

Je kunt moeilijk even een connectie naar de "main-database" maken om te kijken of die key wel geldig is.

Het voordeel hiervan is dat zolang het sign gelijk is, de uitkomst van de functie altijd het zelfde is. Dus bijvoorbeeld in een FORM:

if($_POST['serial'] == genSerial($_POST['user'])
{
// gelukt
}
else
{
// niet gelukt
}

wil je niet dat je het serial kan regenereren, dan moet je aan je sign iets van een uniqid() toevoegen o.i.d. het resultaat moet je dan wel opslaan in een database o.i.d.
 
Het lijkt mij dat de TS de code naar iemand opstuurt en deze zal er dan gebruik van kunnen maken wanneer de serial juist is.

Die controle kun je moeilijk in de code zetten...
 
Het lijkt mij dat de TS de code naar iemand opstuurt en deze zal er dan gebruik van kunnen maken wanneer de serial juist is.

Die controle kun je moeilijk in de code zetten...

Dit is helemaal afhankelijk van de toepassing van de validatie. Ik denk om het te gebruiken tussen username en serial prima is.

Bovendien kan je de encryptie zo moeilijk maken als je zelf wil, denk bijvoorbeeld aan elkeletter te gebruiken en voor elke letter een ander sign.

Als je maar altijd eindigt met

$hash = sha1('een tekst waar in ieder geval alle ingevoerde letters van het te encrypten woord in zitten');

en je geen gebruik maakt van veranderende constanten, zoals de tijd bijvoorbeeld.

Je krijgt dan altijd een gelijk resultaat en zolang de eindgebruiker niet bij de source kan, behoorlijk veilig.

Wil je het nog veiliger maken, tegen BOTS beveiligen e.d. kun je een CAPTCHA toevoegen aan het formulier.

Maar het hangt helemaal af van de toepassing of het verstandig is om zo'n controle te maken
 
Nog even een toevoeging als de code naar iemand wordt opgestuurd is elke vorm van encryptie niet goed genoeg, zeker niet met PHP. Kijk bijvoorbeeld maar naar alle software-paketten die gekraakt worden. Het enige wat je dan kan doen is het heel erg lastig maken.

Dus mijn advies is dan zet de code op je eigen server en laat je klanten bij jouw hosten.

Of maak een contract waarin staat dat het niet is toegestaan de code te kopieren
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan