Пароль от сервера MySQL в программе под Windows
От: TailWind  
Дата: 11.08.15 03:24
Оценка:
Написал я программу под Windows 7, которая работает с базой MySQL

У базы MySQL есть пароль
Не пароль пользователя программы, а пароль от базы
С которого можно таблицы удалить или подправить что угодно

Но ведь это же обычная текстовая константа
Её можно найти поиском в exe файле

Программа связана с финансами
И хотелось бы защититься от кражи пароля

Как быть?
Re: Пароль от сервера MySQL в программе под Windows
От: Слава  
Дата: 11.08.15 03:52
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Программа связана с финансами

TW>И хотелось бы защититься от кражи пароля

TW>Как быть?


Сделать таки разделение прав на уровне базы? Это столь немодно — заводить пользователей в базе и использовать хранимки, зато неплохо работает (в нормальных базах).
Re: Пароль от сервера MySQL в программе под Windows
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 11.08.15 04:01
Оценка: +2
Здравствуйте, TailWind, Вы писали:

TW>Но ведь это же обычная текстовая константа

TW>Её можно найти поиском в exe файле

TW>Программа связана с финансами

TW>И хотелось бы защититься от кражи пароля

TW>Как быть?


Полагаю, писать трехзвенку. Клиентская программа коннектиться к слою бизнес-логики, который также на серваке, и который уже и хранит пароль (лучше в конфиге) от базы. И этот сервер бизнес логики уже сам всё с базой делает, оперируя аккаунтами пользователей в своем "домене". Как-то так, наверно. А вообще, всю жизнь делал также, как и ты, и не парился
Маньяк Робокряк колесит по городу
Re[2]: Пароль от сервера MySQL в программе под Windows
От: TailWind  
Дата: 11.08.15 08:49
Оценка:
С>Сделать таки разделение прав на уровне базы? Это столь немодно — заводить пользователей в базе и использовать хранимки, зато неплохо работает (в нормальных базах).

Пользователь же имеет права на изменение таблиц
Значит зная его пароль, можно всё что хочешь делать

Или я могу разрешить пользователю только хранимые процедуры запускать?
Re: Пароль от сервера MySQL в программе под Windows
От: Stanislaw K СССР  
Дата: 11.08.15 09:20
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Но ведь это же обычная текстовая константа

TW>Её можно найти поиском в exe файле

поиск и идентификация пароля в exe файле — это отдельный специальный навык, обычный пользователь им не обладает.
Все проблемы от жадности и глупости
Re[3]: Пароль от сервера MySQL в программе под Windows
От: Слава  
Дата: 11.08.15 09:20
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Или я могу разрешить пользователю только хранимые процедуры запускать?


Да, можно разрешить только хранимки. Другое дело, что хранимки в конечном итоге должны иметь права на изменение таблиц, и например в постгресе это делается атрибутом у хранимки — с какими правами ее запускать, от имени подключенного пользователя, или от имени владельца хранимки, которым может быть и root. Есть ли такое в mysql — не знаю.
Re[4]: Пароль от сервера MySQL в программе под Windows
От: TailWind  
Дата: 11.08.15 09:43
Оценка:
С>Да, можно разрешить только хранимки. Другое дело, что хранимки в конечном итоге должны иметь права на изменение таблиц, и например в постгресе это делается атрибутом у хранимки — с какими правами ее запускать, от имени подключенного пользователя, или от имени владельца хранимки, которым может быть и root. Есть ли такое в mysql — не знаю.

Спасибо, большое!

Разобрался как делать
Вдруг кому пригодиться вот ссылка на мануал
https://dev.mysql.com/doc/refman/5.0/en/stored-programs-security.html

Так запускается с правами создателя
CREATE DEFINER = 'admin'@'localhost' PROCEDURE p1()
SQL SECURITY DEFINER
BEGIN
  UPDATE t1 SET counter = counter + 1;
END;


Так запускается с правами, того кто запускает
CREATE DEFINER = 'admin'@'localhost' PROCEDURE p2()
SQL SECURITY INVOKER
BEGIN
  UPDATE t1 SET counter = counter + 1;
END;
Re: Пароль от сервера MySQL в программе под Windows
От: vmpire Россия  
Дата: 11.08.15 10:20
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Но ведь это же обычная текстовая константа

TW>Её можно найти поиском в exe файле

TW>Программа связана с финансами

TW>И хотелось бы защититься от кражи пароля

TW>Как быть?

Используйте, например, DPAPI (https://msdn.microsoft.com/en-us/library/ms995355.aspx) и храните пароль зашифрованным где-нибудь в файле/registry/где угодно.
При установке программы пароль придётся один раз ввести.
Re: Пароль от сервера MySQL в программе под Windows
От: MasterZiv СССР  
Дата: 11.08.15 11:35
Оценка:
TW>У базы MySQL есть пароль
TW>Не пароль пользователя программы, а пароль от базы

Нет такого в MySQL. Пароли у пользователей на хосте, для этой пары задаются пароли.
Паролей у БД нет.
Re: Пароль от сервера MySQL в программе под Windows
От: MozgC США http://nightcoder.livejournal.com
Дата: 11.08.15 16:38
Оценка:
Мы хранили пароль зашифрованным в конфигурационном файле.
Еще у MySQL есть плагин позволяющий использовать Windows Authentication (возможно он только для Enterpise Edition доступен), можете посмотреть в эту сторону, в зависимости от того, от чего конкретно вы хотите защититься.
Можете на уровне MySQL пользователя запретить запись/чтение из определенных таблиц.
Хранимые процедуры повсеместно лично я бы не использовал. Геморой с поддержкой. Но можете использовать их частично в критичных к безопасности местах.
Re: Пароль от сервера MySQL в программе под Windows
От: hrensgory Россия  
Дата: 12.08.15 08:12
Оценка:
On 11.08.2015 06:24, TailWind wrote:
> У базы MySQL есть пароль
> Не пароль пользователя программы, а пароль от базы
> С которого можно таблицы удалить или подправить что угодно

> И хотелось бы защититься от кражи пароля

>
> Как быть?

Если программа и БД на одной машине (на эту мысль наводит то, что
константа пароля зашита в exe) — то наверное никак. Имея доступ к компу,
на котором стоит БД — можно изменить рутовый пароль MySQL c помощью его
утилит и потом с помощью рутового аккаунта сделать всё что нужно.

Если база удалённая — то можно зашифровать пароль любым обратимым
шифрованием и перед логином расшифровывать.

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.