Istnieje wiele sposobów realizacji czegoś takiego, ale oto jeden, który nie powinien być zbyt trudny:
Potrzebujesz gdzieś publicznie dostępnej witryny, na której znajduje się plik zawierający skróty kluczy licencyjnych, które zostały umieszczone na czarnej liście. Sposób zarządzania tym plikiem zależy od Ciebie, ale sam plik musi mieć tylko skrót w wierszu.
Następnie oprogramowanie regularnie inicjuje pobieranie tego pliku (większość języków po stronie serwera to umożliwia), a następnie wyszukuje hash zainstalowanego klucza licencyjnego. Jeśli zostanie znaleziony, aplikacja wie, że powinna umrzeć, dopóki czarna lista nie zostanie usunięta.
MD5 lub podobny plus sekret powinny być do tego wystarczające. Możesz stać się bardziej kreatywny i poprosić aplikację o wysłanie żądania do Twojej witryny i przeglądanie go w bazie danych w locie, ale plik (na to, co, mam nadzieję, będzie krótką listą), pozostanie mały i może być najłatwiejszy sposób.
Najtrudniejsze będzie utrzymanie martwej aplikacji. W końcu musisz to gdzieś przechowywać wewnętrznie, co oznacza, że jeśli jest to zbyt oczywiste, można je łatwo obalić, a nawet jeśli nie jest to zbyt oczywiste, można je łatwo przywrócić, przywracając odpowiednie tabele / akta). Dlatego proponuję również drugą metodę ochrony.
Ta metoda przechowuje „LIVE” lub „DEAD” (lub coś wystarczająco podobnego) w tabeli lub pliku, ale ponownie HASHed. To musi być zaszyfrowane solą ORAZ datownikiem. Za każdym razem, gdy strona aplikacji jest uruchomiona, sprawdź tę wartość za pomocą zaszyfrowanej wersji „LIVE” + sól + znacznik czasu, a następnie zezwól na prawidłowy zakres znaczników czasu (na przykład jeden dzień, dwa dni, tydzień, miesiąc itp. Należy pamiętać, że im większy zasięg, tym mocniejsze uderzenie.). Tak długo, jak rzeczy się zgadzają (lub znaleziono dopasowanie), aplikacja jest aktywna; w przeciwnym razie, nawet jeśli wartość w specjalnym pliku lub tabeli to „NA ŻYWO”, nadal będzie martwa, jeśli nastąpi próba przywrócenia z kopii zapasowej, ponieważ znacznik czasu spadnie poza próg.
Podsumowując (zakłada to, że masz programową metodę sprawdzania ważności klucza licencyjnego, taką jak suma kontrolna lub inna metoda):
- CheckBlacklist
- Konwertuj klucz licencyjny na skrót za pomocą soli
- Poproś o plik czarnej listy z serwera
- Czy mój skrót jest w pliku?
- Jeśli TAK, zapisz skrót „DEAD” + sól + znacznik czasu (skrócony do dnia; nie musisz przechowywać godzin + dni + minut)
- Jeśli NIE, zapisz skrót „LIVE” + sól + znacznik czasu (obcięty)
- IsKeyAlive
- Utwórz skrót z „LIVE” + sól + odcięty znacznik czasu
- Załaduj skrót DeadAlive
- Czy oni się zgadzają?
- Jeśli TAK, to żyjemy; zwróć PRAWDA.
- Jeśli NIE, prawdopodobnie jesteśmy martwi, ale nadal możemy znajdować się w naszym oknie znacznika czasu:
- Odejmij dzień od znacznika czasu i powtórz skrót.
- Czy teraz się zgadzamy?
- TAK? Zwróć wartość PRAWDA
- Dodaj dzień do znacznika czasu i powtórz skrót
- Czy teraz się zgadzamy?
- TAK? Zwróć wartość PRAWDA
- W tym momencie jesteśmy poza zakresem znaczników czasu bez dopasowania. Zwróć FAŁSZ. (Kill app)
Teraz dobroć wie, że istnieje milion i jeden sposób, w jaki może to zawieść. Rozważ wszystkie możliwe sposoby i zbuduj niezawodny system (w tym taki, który zakłada, że klient ma rację, jeśli nie można pobrać pliku czarnej listy). Przetestuj, przetestuj, przetestuj, a następnie przetestuj jeszcze trochę przed wdrożeniem, ponieważ jeśli pójdzie nie tak, stracisz zaufanie klienta.