2014-01-03 2 views
3

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

Как, я делаю подключение к базе данных в классе. Могут ли люди читать этот код? Я не хочу, чтобы они знали пароли MySQL.

+0

Определите «безопасный». И какую альтернативу вы рассматриваете? Вы можете зашифровать их и сохранить в файле свойств. –

+1

Если не зашифровано (с паролем, который не хранится в том же месте), никакие данные в файле, который вы разрешите другим пользователям, «безопасны». –

ответ

7

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

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

+0

Спасибо за информацию, но что вы подразумеваете под сервисом? Каждому разрешено использовать его без учетной записи, я хочу только безопасно вставить строку в базу данных. – user2879055

+0

По обслуживанию я имею в виду некоторую функциональность на стороне сервера, которую вы контролируете самостоятельно. Я предполагаю, что эта база данных является общей, поскольку у вас есть проблемы с совместным использованием паролей, поэтому служба будет (например) веб-приложением (asp, php, java и т. Д.), С которым взаимодействует клиент, а затем веб-приложение взаимодействовать с базой данных. Это также зависит от веб-приложения для проверки любых входов от клиента, чтобы клиент не пытался ничего злонамеренного или неопределенного. – cyberconte

+0

Также стоит отметить: есть общий недостаток контекста, поэтому я просто догадываюсь о том, что вы пытаетесь сделать. В целом, его плохая практика заключается в том, чтобы открывать подключение к базе данных по какой-либо причине; они, как правило, не предназначены для этого. Предполагаемая практика заключается в том, что перед службой для проверки и обеспечения безопасности используется услуга. – cyberconte

1

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

Мне нравится jasypt (http://www.jasypt.org/encrypting-configuration.html), взгляните на него, и я надеюсь, что это вам поможет.

+0

, который выглядит интересным спасибо! – user2879055

+0

@ user2879055, если вам интересно, пожалуйста, проголосуйте, пожалуйста. –

+1

Да, я не мог раньше из-за недостаточной репутации. – user2879055

1

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

Единственный раз, когда допустимо выполнять запросы базы данных SQL на стороне клиента, вы получаете доступ к локальной базе данных, которая содержит только данные, относящиеся к ним/их времени выполнения. Однако, по моему опыту, эти случаи немногочисленны и далеки друг от друга, поэтому в целом вы никогда не должны подключаться к базам данных на стороне клиента. Всегда делегируйте эти соединения серверному API.

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