Java-код, Быть Безопасным - PullRequest
       5

Java-код, Быть Безопасным

0 голосов
/ 25 марта 2012

Я создаю клиентскую программу, которая общается с сервером (который я запрограммировал).Я делаю небольшую игру для себя, в которой я кидаю кости, а сервер тоже.Тот, кто получает большее число, побеждает.Однако в моем коде я отправляю команды сервера, когда пользователь нажимает кнопку, а затем сервер отвечает, отправляя обратно то, что он свернул, так что это может быть показано в окне графического интерфейса пользователя.Тем не менее, я считаю, что это очень небезопасный метод.Например, человек может просто декомпилировать файл jar и сделать так, чтобы он всегда бросал 12. Поскольку единственное место, где оба рулона находятся вместе (пользователи и серверы), это экран пользователей, я должен оценить игруот клиента, очевидно, не очень безопасно.Я пытаюсь сделать свою игру более безопасной, и нашел 2 варианта.

  1. Обфускаторы

    • Если кто-то не знает о очень простом в использовании, яне могу понять, как их настроить, так как они редко поставляются с графическим интерфейсом, с помощью которого я легко могу «вставить» свой файл .jar в
  2. Привязка к .exe

    • Честно говоря, я не знаю, насколько это безопасно.Есть программы, в которых я могу «связать» две вещи (в основном для создания вирусов, которые я явно не делаю) в один файл .exe.Я могу связать мой .jar в .exe, но я до сих пор не знаю, можно ли декомпилировать .exe обратно в файл .jar и оттуда обратно в код .java.

Кстати, еще одна проблема безопасности заключается в том, что он подключается к серверу с моего IP-адреса (о котором я не хочу, чтобы пользователь клиента знал)

Ответы [ 3 ]

6 голосов
/ 25 марта 2012

Никогда не доверяйте вводу клиента.

Единственный по-настоящему «безопасный» метод состоит в том, чтобы сервер генерировал как свой собственный ролл, так и ролл для клиента.

Конечно, если результат сравнения бросков не оказывает влияния помимо того, что видит пользователь (другими словами, клиент не сообщает, кто выиграл), тогда действительно, кого это волнует? Я мог бы заплатить пасьянс, чтобы он всегда побеждал, но это не весело.

2 голосов
/ 25 марта 2012

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

Вместо этого вам следует пересмотреть свою архитектуру: вы действительно нужен клиент, чтобы бросить кости?Может ли сервер накатить оба?

1 голос
/ 25 марта 2012

И запутывание, и компиляцию в ".exe" можно относительно легко победить.Хакеры / взломщики и эксперты по антивирусной безопасности делают такие вещи каждый день.

По сути, вы не можете доверять приложениям, работающим на любой машине, которой может управлять кто-то, кому вы не доверяете.На практике это означает, что все, что не находится в вашей (заблокированной и защищенной брандмауэром) серверной комнате.

(Кроме того: даже системы на основе TPM потенциально уязвимы, поскольку были успешные атакина чипах TPM. И это было бы непрактично в любом случае, поскольку TPM недоступен для защиты кода уровня приложения. AFAIK, он даже не используется на уровне ОС ... хотя я слышал, что следующая версия Windowsпотребуется аппаратное обеспечение, обремененное TPM.)

...