Hallo zusammen,
ich suche einen Weg meine Software zu schützen, sodass gewährleistet wird, dass die Software gekauft wurde. Also ob es
a) ein gültiger Lizenzschlüssel ist
b) der Lizenzschlüssel noch gültig ist
Hier ein paar Details zur Software:
- Meine Software wird direkt auf dem PC installiert.
- Die Software enthält eine Datenbank
Mein Lösungsansatz wäre folgender:
1. Kunde kauft Software im Internet
2. Kunde erhält eine Email mit einem automatisch und eindeutigen Serial Key. Der Serial Key wird in einer DB auf dem Webserver gespeichert.
Ebenfalls wird das createDate gespeichert (sodass man ev. später prüfen kann, ob die Lizenz noch gültig ist, z.B. nach einem Jahr)
3. Kunde gibt bei der Installation der Software auf seinem PC diesen Serial Key ein
4. Bei der Installation bzw. Prüfung ob Key stimmt, ist zwingend eine Internetverbindung erforderlich (sollte in der heutigen Zeit kein Problem mehr sein)
5. Der Serial Key wird nun geprüft. Hierzu wird eine Methode (Webservice) auf dem Webserver auf der auch das Programm vom Generieren des Keys aufgerufen und prüft nun ob es den Serial Key gibt.
Nun bin ich mir nicht sicher wie es weiter gehen soll, hier jedoch ein Ansatz:
6. Der Kunde erhält wiederum einen Code zurück, den er entweder bei sich nochmals eingeben muss oder direkt in die DB auf der Desktop Software gespeichert wird.
Dieser Code wird so erzeugt:
a) Auf dem Server gibt es einen privaten Key (den natürlich nur ich selbst weiß). Der Serial Key wird gehast mit dem privaten Key.
=> Vorteil von diesem zweiten Code ist, dass es schwieriger ist die Software zu hacken. Ich könnte eigentlich auch in der DB einfach true oder false setzen.
Der Nachteil ist aber natürlich:
Die Software wird mit samt Benutzername und Passwort für die DB ausgeliefert.
Hat nun jemand auch den zweiten Code, kann er natürlich in die DB gehen und in die entsprechende Tabelle diesen Code eintragen.
Allerdings:
Wie prüfe ich in der Software an sich selbst nochmal, ob der Code valide ist? Hier brauche ich ja dann in der nochmals eine Methode, die in der Desktop Software implementiert ist?
Also was ist, wenn jemand in der Tabelle in der DB, in der der zweite Code gespeichert wird, einen ausgedachten Code eingibt?
Denn im Mom prüfe ich ja dann nur, ob hier überhaupt ein Code drin steht.
Andernfalls müsste ich jedes Mal beim Starten des Programms via Internet abfragen, ob der Code valide ist (was ich nicht will)
Vielen Dank für jede Hilfe
ich suche einen Weg meine Software zu schützen, sodass gewährleistet wird, dass die Software gekauft wurde. Also ob es
a) ein gültiger Lizenzschlüssel ist
b) der Lizenzschlüssel noch gültig ist
Hier ein paar Details zur Software:
- Meine Software wird direkt auf dem PC installiert.
- Die Software enthält eine Datenbank
Mein Lösungsansatz wäre folgender:
1. Kunde kauft Software im Internet
2. Kunde erhält eine Email mit einem automatisch und eindeutigen Serial Key. Der Serial Key wird in einer DB auf dem Webserver gespeichert.
Ebenfalls wird das createDate gespeichert (sodass man ev. später prüfen kann, ob die Lizenz noch gültig ist, z.B. nach einem Jahr)
3. Kunde gibt bei der Installation der Software auf seinem PC diesen Serial Key ein
4. Bei der Installation bzw. Prüfung ob Key stimmt, ist zwingend eine Internetverbindung erforderlich (sollte in der heutigen Zeit kein Problem mehr sein)
5. Der Serial Key wird nun geprüft. Hierzu wird eine Methode (Webservice) auf dem Webserver auf der auch das Programm vom Generieren des Keys aufgerufen und prüft nun ob es den Serial Key gibt.
Nun bin ich mir nicht sicher wie es weiter gehen soll, hier jedoch ein Ansatz:
6. Der Kunde erhält wiederum einen Code zurück, den er entweder bei sich nochmals eingeben muss oder direkt in die DB auf der Desktop Software gespeichert wird.
Dieser Code wird so erzeugt:
a) Auf dem Server gibt es einen privaten Key (den natürlich nur ich selbst weiß). Der Serial Key wird gehast mit dem privaten Key.
=> Vorteil von diesem zweiten Code ist, dass es schwieriger ist die Software zu hacken. Ich könnte eigentlich auch in der DB einfach true oder false setzen.
Der Nachteil ist aber natürlich:
Die Software wird mit samt Benutzername und Passwort für die DB ausgeliefert.
Hat nun jemand auch den zweiten Code, kann er natürlich in die DB gehen und in die entsprechende Tabelle diesen Code eintragen.
Allerdings:
Wie prüfe ich in der Software an sich selbst nochmal, ob der Code valide ist? Hier brauche ich ja dann in der nochmals eine Methode, die in der Desktop Software implementiert ist?
Also was ist, wenn jemand in der Tabelle in der DB, in der der zweite Code gespeichert wird, einen ausgedachten Code eingibt?
Denn im Mom prüfe ich ja dann nur, ob hier überhaupt ein Code drin steht.
Andernfalls müsste ich jedes Mal beim Starten des Programms via Internet abfragen, ob der Code valide ist (was ich nicht will)
Vielen Dank für jede Hilfe