2015-06-24 2 views
0

Я пытаюсь сделать пробную версию нашего программного обеспечения. Но я не в состоянии сделать это правильно. Когда часы в моей системе изменены, они не работают.Как сделать пробную версию нашего программного обеспечения

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
Calendar expiredate = Calendar.getInstance(); 

try { 
    Date date = sdf.parse("24/06/2015"); 
    expiredate.setTime(date); 
    if (Calendar.getInstance().after(expiredate)) { 
     JOptionPane.showMessageDialog(null, "Sorry your software has expired", "Expire", 
      JOptionPane.INFORMATION_MESSAGE); 
     System.exit(0); 
    } 
} catch(ParseException e) { 
    // ... 
} 
+1

вы можете сохранить последнюю начатую дату где-то при запуске программы и проверке lastdate> currentdate, если это так даёт ошибку «часы изменились» –

+0

Какой уровень защиты вы желаете? Если достаточно работать только для обычных пользователей - например, игнорируя те, которые будут декомпилировать банку и найти логику для испытания? – John

+0

@FastSnail невозможно будет декомпилировать банку и найти это место, которое затем будет изменено. Если не указано, что сервер контролирует OP. – John

ответ

4

Вы должны решить, сколько энергии вы хотите потратить. Если ваше приложение только работает на системе клиента (что означает: ему не требуется подключение к центральному серверу) ... тогда ваши варианты в значительной степени ограничены.

Конечно, ваше приложение может сохранять дату/отметки времени ... но это не поможет, когда люди начинают фальсифицировать системные часы.

Короче говоря: вы должны балансировать между «легко реализуемыми, но, вероятно, легко обходить» и «трудно реализовать», и, вероятно, легко сделать это неправильно ». Другими словами: имейте в виду, что такие «функции проверки лицензии» могут сделать слишком трудным для ваших потенциальных клиентов использование программного обеспечения. Или «хуже»: вы тратите много времени на какое-то «отличное решение для обеспечения безопасности» на эту проблему, и при его внедрении вы добавляете в свой программник различные ошибки. Не стоит недооценивать усилия, которые потребуются, чтобы вытащить решение, которое невозможно взломать мотивированным пользователем ...

Окончательное предложение; попробуйте другой подход: сосредоточьтесь на создании отличных пользователей с вашим приложением (но, возможно, с ограниченным набором функций). Просто убедите своих клиентов, что ваше приложение стоит платить деньги; и не предоставляют «пробные лицензии»; но бесплатную «пробную версию» с меньшей функциональностью, чем реальный продукт.

+0

+1, чтобы указать, что безопасность - это вопрос баланса между ресурсами, желающими инвестировать, и рисками, которые готовы принять. – John

1

$sql ='SELECT * FROM finsys.user WHERE username= "$user" AND password = "$pass" AND now() <= "20-Dec" ';

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

клиент не изменяет изменения системной даты для времени прохода. если они показывают пробную версию сообщения, они могут изменить системную дату.

Не предоставлять никаких пробных сообщений. предоставлять сообщение как «аутентификация пользователя». Они не смогут узнать, почему это произошло; прежде чем эта БД изменится.

Смежные вопросы