Edit: Kopier -> kopieer 
Ik heb een script dat ik tegen kopiëren wil beveiligen.
Klanten betalen voor een bepaalde periode, dus ik wil dat als die periode voorbij is het script niet meer werkt.
De php code is allemaal encode met zend.
Maar nu zoek ik een goede en veilige manier om te checken of hun licentie nog wel geldig is.
Ik wil geen datum van hun server gebruiken omdat ze dat gemakkelijk kunnen aanpassen.
Ik heb het volgende bedacht:
Een script dat iedere dag aangeroepen wordt.
Het vraag een php bestand aan op onze server en geeft daarbij de volgende variable mee:
Klant_id
Check_id
Aantal_sites
Code
Het klant id is het id van de klant.
Het check id is het nummer van de check, dit om te voorkomen dat je 2x hetzelfde nummer kan gebruiken.
Aantal sites is het aantal sites waar de gebruiker een licentie voor heeft.
De code wordt opgebouwd op de volgende manier:
Md5 van Klant_id+eenwoordwataltijdhetzelfdeis+Check_id+Aantal_sites
Het script wat aangeroepen wordt maakt de code op precies dezelfde manier.
Als deze code overeenkomt, en het check_id is niet al een keer gebruikt.
Dan maakt het script een nieuwe md5 code op dezelfde manier, maar dan met een ander woord, en geeft dit terug aan de site die het aanvroeg.
Die maakt ook die md5 code met het 2e woord, en kijkt of deze hetzelfde is.
Zo ja, dan is de licentie geldig.
Als het fout gaat wil ik dat opslaan in de database, en bijvoorbeeld als het meer dan 30x (30dagen) fout is gegaan werkt het script niet meer. Onze server kan ook een keer down zijn, dus daarom moet het opgeslagen worden hoevaak het fout ging.
Het probleem is dus als ze het willen hacken, kunnen ze in de database(die mysql is) het aantal keer dat het fout is gegaan wijzigen, als ze weten hoe dit in elkaar zit.
Als ik het zou encoden, kunnen ze bijvoorbeeld de 1e keer die code opslaan en de code altijd vervangen door die code in de database.
En een ander probleem is dat ze als ze een md5 string kunnen onderscheppen, en dan er voor zorgen dat het check_id nummer weer gereset wordt naar die die ze onderschept hadden en dan er voor zorgen dat ze naar een eigen script connecten ipv mijn server, die dan altijd die md5 terug geeft.
Ik hoop dat ik het een beetje duidelijk heb uitgelegd.
Weet iemand een goede oplossing voor dit probleem?
Ik heb een script dat ik tegen kopiëren wil beveiligen.
Klanten betalen voor een bepaalde periode, dus ik wil dat als die periode voorbij is het script niet meer werkt.
De php code is allemaal encode met zend.
Maar nu zoek ik een goede en veilige manier om te checken of hun licentie nog wel geldig is.
Ik wil geen datum van hun server gebruiken omdat ze dat gemakkelijk kunnen aanpassen.
Ik heb het volgende bedacht:
Een script dat iedere dag aangeroepen wordt.
Het vraag een php bestand aan op onze server en geeft daarbij de volgende variable mee:
Klant_id
Check_id
Aantal_sites
Code
Het klant id is het id van de klant.
Het check id is het nummer van de check, dit om te voorkomen dat je 2x hetzelfde nummer kan gebruiken.
Aantal sites is het aantal sites waar de gebruiker een licentie voor heeft.
De code wordt opgebouwd op de volgende manier:
Md5 van Klant_id+eenwoordwataltijdhetzelfdeis+Check_id+Aantal_sites
Het script wat aangeroepen wordt maakt de code op precies dezelfde manier.
Als deze code overeenkomt, en het check_id is niet al een keer gebruikt.
Dan maakt het script een nieuwe md5 code op dezelfde manier, maar dan met een ander woord, en geeft dit terug aan de site die het aanvroeg.
Die maakt ook die md5 code met het 2e woord, en kijkt of deze hetzelfde is.
Zo ja, dan is de licentie geldig.
Als het fout gaat wil ik dat opslaan in de database, en bijvoorbeeld als het meer dan 30x (30dagen) fout is gegaan werkt het script niet meer. Onze server kan ook een keer down zijn, dus daarom moet het opgeslagen worden hoevaak het fout ging.
Het probleem is dus als ze het willen hacken, kunnen ze in de database(die mysql is) het aantal keer dat het fout is gegaan wijzigen, als ze weten hoe dit in elkaar zit.
Als ik het zou encoden, kunnen ze bijvoorbeeld de 1e keer die code opslaan en de code altijd vervangen door die code in de database.
En een ander probleem is dat ze als ze een md5 string kunnen onderscheppen, en dan er voor zorgen dat het check_id nummer weer gereset wordt naar die die ze onderschept hadden en dan er voor zorgen dat ze naar een eigen script connecten ipv mijn server, die dan altijd die md5 terug geeft.
Ik hoop dat ik het een beetje duidelijk heb uitgelegd.
Weet iemand een goede oplossing voor dit probleem?