Как обезопасить подключение к бд

Версия Minecraft
1.7.10
API
Forge
122
1
5
Мой мод есть на сервере и клиенте, и понятное дело что в него пихать пароль от бд не безопасно. Один из вариантов выносить в конфиг на сервере,
но что-то мне кажется что можно будет перехватить каким-то образом строку подключения. Второй способ через плагин, но сомневаюсь что можно задействовать методы плагина в моде. Подскажите пожалуйста как лучше сделать.
 
346
25
94
1) Работа с SQL должна быть асинхронной, иначе tps умрёт
2) Работать с SQL необходимо исключительно на сервер сайде, то есть под проверками !world.isRemote
3) Если у тебя будут пакеты клиент -> сервер, где будет при обработке использоваться база данных, то всегда помни, с клиента можно отправить пакет и искусственным путём (читы) с любой информацией, нужны дополнительные проверки
 
346
25
94
А как тут подробнее? Просто необходимо всегда делать любые действия с базой данных только на серверной стороне, чтобы быть уверенным, что код будет выполнен только со стороны сервера ставим проверку !World#isRemote
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Из запросы делать только с использованием PreparedStatement. Никакой подстановки пользовательских данных в запрос быть не должно.
А лучше взять какую-то библиотеку. Понятно что тянуть ORM по типу хибернейта - бред. Есть куча лёгкий либ, если не планирую прям глобально работать с базой - беру sql2o.
 
1,074
72
372
Всё что связано с парсингом часто подвержено уязвимостям. Да и самому сломать легко, когда потребуется передать что-то чуть более сложнее чем ник игрока.

Если не понял, Java и базы данных | PreparedStatement
 

Icosider

Kotliner
Администратор
3,603
99
664
1) Работа с SQL должна быть асинхронной, иначе tps умрёт
Не все запросы должны быть асинхронными, асинхронность тоже может убить tps, если неправильно ею пользоваться. Но не менее важно оптимизировать сами запросы...

Поддерживаю @tox1cozZ, вместо hibernate можно взять ormlite
 
Последнее редактирование:

GoogleTan

Картошка :3
1,354
43
310
Так а какие проблемы будут если я буду подставлять данные игрока в запрос, чего мне нужно опасаться?
Представим ситуацию, есть у игрока условный пароль. Допустим ты не пользуешься хешами. Ты посылаешь запрос его проверки. Человек ввёл "abacaba\" OR True". Тогда у тебя в запросе появится новое условие, заданое уже пользователём. Что вообще не есть гуд. Используй параметризованные запросы и будет тебе счастье.
 
Сверху