Існує багато способів реалізувати щось подібне, але ось такий, який не повинен бути надто важким:
Вам потрібен загальнодоступний веб-сайт, де розміщується файл, що містить хеші ліцензійних ключів, які потрапили у чорний список. Як ви керуєте цим файлом, залежить від вас, але для самого файлу потрібно мати лише хеш на рядок.
Потім на повторюваній основі ваше програмне забезпечення ініціює завантаження цього файлу (для цього передбачено більшість мов на сервері), а потім здійснює пошук у ньому хеша встановленого ліцензійного ключа. Якщо його знайдуть, то програма знає, що вона повинна померти, поки не буде видалено чорний список.
MD5 або подібний плюс секрет повинен бути достатнім для цього. Ви можете стати фантазією і змусити програму надіслати запит на ваш сайт, і ви під час пошуку шукаєте його в базі даних, але файл (на що я, мабуть, сподіваюся, це буде короткий список), сподіваємось, він залишиться невеликим і може бути найпростіший спосіб.
Важкою частиною буде збереження заявки мертвою. Зрештою, ви повинні зберігати це десь всередині, а це означає, що якщо це занадто очевидно, це може бути легко знищено, і навіть якщо це не надто очевидно, його можна легко повернути, відновивши відповідну таблицю / таблицю / файл (и). Тому я пропоную також другий спосіб захисту.
Цей метод зберігав би "LIVE" або "DEAD" (або щось досить схоже) у таблиці чи файлі, але знову HASHed. Це потрібно перемішати з сіллю І часовою позначкою. Щоразу, коли запускається сторінка вашої програми, перевіряйте це значення за допомогою хешованої версії "LIVE" + сіль + часова мітка, а потім дозвольте дійсний діапазон часових позначок (наприклад, один день, два дні, один тиждень, один місяць тощо). Майте на увазі, чим більший діапазон, тим складніше буде сприйняття.) Поки речі збігаються (або знайдено збіг), додаток живе; в іншому випадку, навіть якщо значення в спеціальному файлі або таблиці є "LIVE", воно все одно буде мертвим, якщо буде спроба відновлення з резервної копії, оскільки часова мітка випаде за ваш поріг.
Підсумовуючи це (це передбачає, що у вас є якийсь програмний метод перевірки дійсності ліцензійного ключа, наприклад, якась контрольна сума чи інший метод):
- CheckBlacklist
- Перетворіть ліцензійний ключ у хеш із сіллю
- Запросити файл із чорного списку від сервера
- Мій хеш у файлі?
- Якщо так, то зберігайте хеш "DEAD" + сіль + часова марка (усічена до дня; не потрібно зберігати години + дні + хвилини)
- Якщо НІ, то зберігайте хеш "LIVE" + сіль + часова марка (trunc'd)
- IsKeyAlive
- Створіть хеш із "LIVE" + сіль + trunc'd часова мітка
- Завантажте хеш DeadAlive
- Чи згодні вони?
- Якщо ТАК, то ми живі; повернути ПРАВИЛЬНО
- Якщо ні, то, можливо, ми померли, але ми все ще можемо знаходитись у вікні часової позначки:
- Відняти день від мітки часу і повторити хеш.
- Чи згодні ми зараз?
- ТАК? Поверніть ІСТИНА
- Додайте до мітки день і повторіть хеш
- Чи згодні ми зараз?
- ТАК? Поверніть ІСТИНА
- На даний момент ми вийшли з діапазону часових позначок без відповідності. Повернути БАЖНО (Забити програму)
Тепер добро знає, що є мільйон, і один із способів цього може провалитися. Розглянемо всі можливі способи та створимо надійну систему (включаючи таку, яка передбачає, що клієнт має рацію, якщо файл чорного списку неможливо завантажити). Тестуйте, випробовуйте, тестуйте його, а потім ще раз протестуйте перед тим, як розгортатись, адже якщо це піде не так, ви втратили довіру свого клієнта.