Здравствуйте, TailWind, Вы писали:
TW>Программа связана с финансами TW>И хотелось бы защититься от кражи пароля
TW>Как быть?
Сделать таки разделение прав на уровне базы? Это столь немодно — заводить пользователей в базе и использовать хранимки, зато неплохо работает (в нормальных базах).
Re: Пароль от сервера MySQL в программе под Windows
Здравствуйте, TailWind, Вы писали:
TW>Но ведь это же обычная текстовая константа TW>Её можно найти поиском в exe файле
TW>Программа связана с финансами TW>И хотелось бы защититься от кражи пароля
TW>Как быть?
Полагаю, писать трехзвенку. Клиентская программа коннектиться к слою бизнес-логики, который также на серваке, и который уже и хранит пароль (лучше в конфиге) от базы. И этот сервер бизнес логики уже сам всё с базой делает, оперируя аккаунтами пользователей в своем "домене". Как-то так, наверно. А вообще, всю жизнь делал также, как и ты, и не парился
С>Сделать таки разделение прав на уровне базы? Это столь немодно — заводить пользователей в базе и использовать хранимки, зато неплохо работает (в нормальных базах).
Пользователь же имеет права на изменение таблиц
Значит зная его пароль, можно всё что хочешь делать
Или я могу разрешить пользователю только хранимые процедуры запускать?
Re: Пароль от сервера MySQL в программе под Windows
Здравствуйте, TailWind, Вы писали:
TW>Или я могу разрешить пользователю только хранимые процедуры запускать?
Да, можно разрешить только хранимки. Другое дело, что хранимки в конечном итоге должны иметь права на изменение таблиц, и например в постгресе это делается атрибутом у хранимки — с какими правами ее запускать, от имени подключенного пользователя, или от имени владельца хранимки, которым может быть и root. Есть ли такое в mysql — не знаю.
Re[4]: Пароль от сервера MySQL в программе под Windows
С>Да, можно разрешить только хранимки. Другое дело, что хранимки в конечном итоге должны иметь права на изменение таблиц, и например в постгресе это делается атрибутом у хранимки — с какими правами ее запускать, от имени подключенного пользователя, или от имени владельца хранимки, которым может быть и root. Есть ли такое в mysql — не знаю.
Здравствуйте, TailWind, Вы писали:
TW>Но ведь это же обычная текстовая константа TW>Её можно найти поиском в exe файле
TW>Программа связана с финансами TW>И хотелось бы защититься от кражи пароля
TW>Как быть?
Используйте, например, DPAPI (https://msdn.microsoft.com/en-us/library/ms995355.aspx) и храните пароль зашифрованным где-нибудь в файле/registry/где угодно.
При установке программы пароль придётся один раз ввести.
Re: Пароль от сервера MySQL в программе под Windows
Мы хранили пароль зашифрованным в конфигурационном файле.
Еще у MySQL есть плагин позволяющий использовать Windows Authentication (возможно он только для Enterpise Edition доступен), можете посмотреть в эту сторону, в зависимости от того, от чего конкретно вы хотите защититься.
Можете на уровне MySQL пользователя запретить запись/чтение из определенных таблиц.
Хранимые процедуры повсеместно лично я бы не использовал. Геморой с поддержкой. Но можете использовать их частично в критичных к безопасности местах.
Re: Пароль от сервера MySQL в программе под Windows
On 11.08.2015 06:24, TailWind wrote: > У базы MySQL есть пароль > Не пароль пользователя программы, а пароль от базы > С которого можно таблицы удалить или подправить что угодно
> И хотелось бы защититься от кражи пароля > > Как быть?
Если программа и БД на одной машине (на эту мысль наводит то, что
константа пароля зашита в exe) — то наверное никак. Имея доступ к компу,
на котором стоит БД — можно изменить рутовый пароль MySQL c помощью его
утилит и потом с помощью рутового аккаунта сделать всё что нужно.
Если база удалённая — то можно зашифровать пароль любым обратимым
шифрованием и перед логином расшифровывать.