Как обычно в файлах JAR реализуются безопасные соединения с базой данных?

Я не разработчик Java, но мой клиент нанял одного для обновления некоторых файлов JAR на своем сайте. Перед этим мы проверили существующий код и обнаружили ряд уязвимостей. Одним из решений, которые мы использовали для повышения безопасности файлов, является создание нового пользователя базы данных с доступом только для чтения к базе данных и только для тех таблиц, которые необходимы файлам JAR для работы. Затем я обнаружил, что они хранят эти учетные данные в простых текстовых файлах вместе с файлами JAR, что является лишь обоснованным предположением, недоступным широкой публике. И, наконец, сегодня они просят гораздо более слабые привилегии базы данных, но я не думаю, что она понимает, что они действительно не нужны ей для правильно написанного файла JAR.

В любом случае, я почти уверен, что этот разработчик не стал бы узнайте уязвимость системы безопасности, если она укусила ее за зад. И я недостаточно знаю о файлах Java / JAR, чтобы правильно посоветовать ей, что она должна делать, только достаточно об информационной безопасности, чтобы сказать ей, что она не должна делать.

Так каковы типичные соображения безопасности при написании распределенного файла JAR, который подключается к удаленной базе данных MySQL? Есть ли стандартный способ зашифровать детали подключения (имя пользователя и / или пароль)? IIRC, это не файлы .jar, просто прославленные ZIP-архивы, а не Может кто-нибудь для этого распаковать файл и просмотреть подробности подключения в исходном коде? Есть ли способ зашифровать содержимое jar-файла?


ОБНОВЛЕНИЕ: я получил следующее разъяснение от разработчика. Звучит правильно?

Все классы в файле jar зашифрованы. Я всегда зашифровывал все файлы классов перед их архивированием в файл jar. если вы откроете любую [отредактированную] банку, вы увидите только зашифрованный код. поэтому у пользователя нет возможности просмотреть исходный код, декомпилировав класс. классы действительно используют jdbc для подключения к базе данных, поисковой системе необходимо подключиться к базе данных для запуска sqls. эти sql-файлы находятся в зашифрованном виде в jar-файле.

когда я спросил вас о шифровании пароля БД, я имел в виду то, что вы говорите ниже. напишем код шифрования / дешифрования на java и будем его использовать. Скомпилированный класс из этого исходного кода снова будет зашифрован как часть процедуры шифрования повторного класса. Мы используем инструмент обфускации Java под названием Retroguard для шифрования всех классов. мы также встраиваем ключ в html-страницу, чтобы убедиться, что приложение будет работать только в том случае, если оно было загружено с [отредактированного] веб-сайта. если пользователь скопирует jar-файл на свой локальный компьютер и попытается запустить его, произойдет сбой.

5
задан Chris Bloom 7 September 2010 в 17:23
поделиться