Es gibt viele Möglichkeiten, um so etwas zu implementieren, aber hier ist eine, die nicht zu schwierig sein sollte:
Sie benötigen eine öffentlich zugängliche Website, auf der eine Datei mit den Hashes der Lizenzschlüssel gehostet wird, die auf die schwarze Liste gesetzt wurden. Wie Sie diese Datei verwalten, bleibt Ihnen überlassen, aber die Datei selbst muss nur einen Hash pro Zeile enthalten.
Anschließend initiiert Ihre Software in regelmäßigen Abständen einen Download dieser Datei (in den meisten serverseitigen Sprachen ist dies vorgesehen) und durchsucht sie anschließend nach dem Hash des installierten Lizenzschlüssels. Wenn es gefunden wird, weiß die Anwendung, dass es abstürzen sollte, bis die schwarze Liste entfernt wird.
Hierfür sollte MD5 oder ähnliches plus ein Geheimnis ausreichen. Sie könnten schicker werden und die Anwendung die Anfrage direkt an Ihre Site senden lassen und sie in einer Datenbank nachschlagen, aber die Datei (für die ich davon ausgehe, dass es sich hoffentlich um eine kurze Liste handelt) würde hoffentlich klein bleiben und möglicherweise klein sein der einfachste Weg.
Der schwierigere Teil wird sein, die Anwendung tot zu halten. Schließlich muss dies irgendwo intern gespeichert werden, was bedeutet, dass es, wenn es zu offensichtlich ist, leicht unterlaufen werden kann, und selbst wenn es nicht zu offensichtlich ist, kann es leicht durch Wiederherstellen der entsprechenden Tabelle (n) wiederhergestellt werden. Datei (en). Deshalb schlage ich auch eine zweite Schutzmethode vor.
Diese Methode würde "LIVE" oder "DEAD" (oder etwas ausreichend Ähnliches) in einer Tabelle oder einer Datei speichern, aber wieder HASHed. Dies muss mit Ihrem Salz UND einem Zeitstempel gehasht werden. Überprüfen Sie diesen Wert jedes Mal, wenn eine Seite in Ihrer Anwendung ausgeführt wird, mit einer gehashten Version von "LIVE" + salt + timestamp und lassen Sie dann einen gültigen Bereich von Zeitstempeln zu (z. B. einen Tag, zwei Tage, eine Woche, einen Monat usw.). Denken Sie daran, je größer die Reichweite, desto schwerer wird die Leistung.). Solange die Dinge übereinstimmen (oder eine Übereinstimmung gefunden wird), ist die App aktiv. Andernfalls ist der Wert in der speziellen Datei oder Tabelle auch dann "LIVE", wenn versucht wird, eine Wiederherstellung von der Sicherung durchzuführen, da der Zeitstempel außerhalb Ihres Schwellenwerts liegt.
Zusammenfassend (dies setzt voraus, dass Sie über eine programmgesteuerte Methode zur Überprüfung der Gültigkeit eines Lizenzschlüssels verfügen , z. B. eine Prüfsumme oder eine andere Methode):
- CheckBlacklist
- Konvertieren Sie License Key in Hash mit Salz
- Blacklist-Datei vom Server anfordern
- Ist mein Hash in der Datei?
- Wenn JA, dann speichere Hash von "TOT" + Salz + Zeitstempel (auf den Tag verkürzt; keine Notwendigkeit, Stunden + Tage + Minuten zu speichern)
- Wenn NEIN, dann speichere Hash von "LIVE" + Salz + Zeitstempel (abgeschnitten)
- IsKeyAlive
- Erstellen Sie einen Hash aus "LIVE" + Salt + abgeschnittenem Zeitstempel
- Laden Sie den DeadAlive-Hash
- Stimmen sie überein
- Wenn JA, dann leben wir; return TRUE.
- Wenn NEIN, sind wir möglicherweise tot, befinden uns aber möglicherweise noch innerhalb unseres Zeitstempelfensters:
- Subtrahieren Sie einen Tag vom Zeitstempel und wiederholen Sie den Hash.
- Sind wir uns jetzt einig?
- JA? Rückgabe TRUE
- Fügen Sie dem Zeitstempel einen Tag hinzu und wiederholen Sie den Hash
- Sind wir uns jetzt einig?
- JA? Rückgabe TRUE
- Zu diesem Zeitpunkt befinden wir uns außerhalb des Zeitstempelbereichs und haben keine Übereinstimmung. Falsch zurückgeben. (Kill App)
Nun, meine Güte, es gibt eine Million und eine Möglichkeit, wie dies scheitern kann. Berücksichtigen Sie alle möglichen Möglichkeiten und erstellen Sie ein zuverlässiges System (einschließlich eines, bei dem davon ausgegangen wird, dass der Client richtig ist, wenn die Blacklist-Datei nicht heruntergeladen werden kann). Testen Sie, testen Sie, testen Sie es und testen Sie es dann noch einmal, bevor Sie es bereitstellen. Wenn es schief geht, haben Sie das Vertrauen Ihres Kunden verloren.