Я создаю программу с лицензией на основе даты, если срок ее действия истек, лицензия недействительна.Однако моя проблема заключалась в следующем:
Если пользователь изменил дату компьютера, он также изменил бы программу и, таким образом, "взломал" программу.Я решил это следующим образом:
В PHP я получаю дату сервера Hosting / MySQL:
127.0.0.1 / getdateserver.php
$query = "SELECT NOW() as `now`";
$result = $conn->query($query);
$row = $result->fetch_array();
$now = $row['now'];
echo "$now";
В C #Я делаю запрос каждую секунду для моего сайта и дату возвращения сейчас:
private Timer timer;
private DateTime timeserver;
public void InitTimer()
{
timer = new Timer();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = 1000;
timer.Start();
}
private void timer_Tick(object sender, EventArgs e)
{
setDateServerAsync();
}
private async void setDateServerAsync()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("127.0.0.1/getdateserver.php");
HttpResponseMessage response = await client.GetAsync("");
response.EnsureSuccessStatusCode();
string result = response.Content.ReadAsStringAsync().Result;
timerserver = DateTime.ParseExact(result, "yyyy-MM-dd HH:mm:ss",
System.Globalization.CultureInfo.InvariantCulture);
}
Все работает отлично.Но этот метод выполняет много запросов в минуту (RPM), и, поскольку я могу иметь несколько пользователей, использующих программу, число только увеличивается.Поэтому мой вопрос: есть ли другие эффективные методы?
PS: моя программа работает только с интернетом