Задать вопрос
@ximtej

Как правильно хранить важные данные в mysql?

Заранее извиняюсь за может быть абстрактный вопрос.

Итак, есть некий сайт, который хранит финансовую информацию. Одни пользователи оплачивают услуги на сайте. Другие пользователи продают услуги и получают выплаты. Информация об операциях хранится в БД MYSQL. Данные о поступившей оплате поступают от партнера (например, от Робокассы), в любой момент можно проверить корректность платежа. Данные об оказанной услуге поступают от пользователей сайта (покупатель передает секретный пин-код продавцу).

Сильно мучает вопрос безопасности данных. Например, злоумышленник получает доступ к серверу или БД, и присваивает платежи, подменив идентификатор получателя (продавца) на свой. Или злоумышленник ставит статус для своих заказов как для оказанных, и получает деньги, не оказав услуги.

Вопрос: как предотвратить подобные махинации или свести их вероятность к минимуму? Дублировать информацию? Шифровать данные? Шифровать скрипты? Хранить данные на другом сервере? Записывать все операции в локальный Excel документ?
  • Вопрос задан
  • 536 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
bigton
@bigton
Web-программист
Если вы боитесь, что доступ к данным будет получен в результате SQL-инъекции, то простое логирование в файл или контрольная сумма записи может вам помочь.

Если вы боитесь, что доступ к данным будет получен путём взлома сервера, то вам ничего не поможет.
Ответ написан
@nirvimel
Вы знаете что на жаргоне означает "pwn"? Это значит, что если атакующий получил доступ к серверу (на уровне с достаточными привилегиями), то серьезному бизнесу практически конец - он заберет все хоть сколько-нибудь ценную информацию (включая все логи), переведет себе всю электронную валюту со всех счетов, к которым есть доступ с сервера, сотрет и уничтожит все базы и все содержимое файловой системы, задефейсит сайт и выложит на нем всю приватную информацию о вас и обо всех клиентах так, чтобы нанести максимальный урон бизнесу. При этом никакие трюки с шифрованием ситуацию не меняют. Если хоть один скрипт имеет доступ куда-то, то этот доступ получит злоумышленник, получивший права юзера, от имени которого запущен скрипт (или рута).

Если все так ужасно, то как же тогда работают электронные биржи (типа bitfinex), ворочающие миллионами и открытые в интернет? - Это вопрос на миллион. Ответ простой и одновременно сложный - все дело в системном администрировании. На админах, живых людях, держится вся безопасность информационной системы биржи. Но это, конечно, далеко не тот уровень, что можно найти на фрилансе по запросу "Администрирование MySql 9.99$/час".

Конкретно в вашем случае могу посоветовать только настроить систему автоматического бекапа с заливкой по сети в надежное место, например, в облако, куда настроен доступ только на добавление (chmod a-X на каталог + рандомные имена файлов (часть имени) каждый раз при добавлении нового). Расписание (и соответствующий слот для бекапа) должно быть не одно. Необходимы: быстрый 12 часовой бекап (если взлом произошел ночью (как обычно), а восстановление утром то дневные пользователи всего этого даже не почувствуют), суточный (строго обязательно), недельный, месячный, квартальный и годовой. Все это может пригодиться на случай, когда разработчики и админы проспали какую-то незаметную порчу базы, и она проникла в высокочастотные бекапы.
Ответ написан
Комментировать
@alexxandr
you'll see in memory only 0xDEADFACE
зашифровать БД сначала.
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
как минимум - разные пользователи для чтения и апдейта данных.

при апдейте данных - проверять максимально жестко все входящие.

использовать только параметризованные запросы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы