Лучший подход для проверки лицензионного ключа на стороне сервера с привязкой HWID в C#C#

Место общения программистов C#
Ответить
Anonymous
 Лучший подход для проверки лицензионного ключа на стороне сервера с привязкой HWID в C#

Сообщение Anonymous »

Я создаю коммерческое настольное приложение на C#, и мне нужно реализовать проверку лицензии, которая предотвращает совместное использование ключей между пользователями.
Чего я пытаюсь достичь:
  • Привязать каждый лицензионный ключ к определенному компьютеру с помощью идентификатора оборудования (HWID).
  • Проверить лицензии на стороне сервера, чтобы проверку нельзя было исправить на стороне клиента.
  • Handle крайние случаи, такие как обновление оборудования (поток сброса HWID).
  • Немедленно внесите в черный список скомпрометированные ключи без нового развертывания.
Что я пробовал: Я изучал возможность создания HWID на основе комбинации идентификатора процессора, серийного номера материнской платы и MAC-адреса, хешированных вместе. Для проверки на стороне сервера я сейчас вызываю внешний REST API при запуске и кэширую результат сеанса.
Текущий код C#:

Код: Выделить всё

public async Task VerifyLicense(string licenseKey, string hwid)
{
var response = await _httpClient.PostAsJsonAsync("/licenses/verify", new {
key = licenseKey,
hwid = hwid,
sessionid = _sessionId
});

return response.IsSuccessStatusCode;
}
Вопросы
  • Является ли сочетание ЦП + материнской платы + MAC правильным подходом для стабильного HWID или существует более надежный метод?
  • Как мне следует обрабатывать постепенное ухудшение, если сервер проверки временно недоступен?
  • Какой правильный шаблон для периодического сеанса повторная проверка во время длительного сеанса приложения?


Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-in-c-sh
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»