GeekT
@GeekT
Основатель и генеральный директор "Пегий Дудочник"

Безопасно ли хранить данные аутентификации в открытом виде, для БД MySQL?

Насколько безопасно хранить данные аутентификации к БД MySQL в файле .php?!

Я очень зеленый чел в этом деле и очень параноидален. Скажите мне пожалуйста насколько безопасны данные способы? Может есть еще какие способы? Может не стоит хранить пароли прям в таком открытом виде? Может лучше придумать какие механизмы само-шифрования?

<?php #Вариант 1
     $host = 'localhost';
     $name_bd = 'myBase';
     $user = 'admin';
     $password = '1234567'; 
?>


<?php #Вариант 2
     define('HOST', 'localhost');
     define('NAME_BD', 'myBase');
     define('USER', 'admin');
     define('PASSWORD', '1234567');
?>
  • Вопрос задан
  • 949 просмотров
Решения вопроса 3
Пароли и другие чувствительные данные можно передавать через переменные окружения. Доступ к переменным окружения имеет только само приложение посредством веб-сервера (с правами пользователя, из-под которого он запущен). Например вот так (Linux).
Ответ написан
@btpa
В говносистемах, коих львинная часть - делают именно так.

Шифовать, если у вас что-то вроде PHP/Python/NodeJS, где есть исходных текст на сервере - совершенно бессмысленно, ведь код расшифровки остается на том же сервере.

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

В серьезных система делают не так как вы написали, а несколько иначе:
https://12factor.net/ru/
Ответ написан
akubintsev
@akubintsev
Опытный backend разработчик
Это стандартная практика. Лучше, если это будет отдельный конфигурационный файл.

Главный вопрос, который стоит себе задать: какие данные требуется защитить особым образом?
Если гипотетически вам надо хранить "чувствительные данные", например о платежных картах (чего конечно же в реальности не может быть у вас), тогда надо организовывать защищенное хранилище. У нас был сервис, работающий через API по SSL с клиентским сертификатом. Он использовал хранение данных с шифрованием на случай получения несанкционированного доступа к самому серверу, а также требовал инициализации при перезагрузке с помощью двух паролей (на каждого из 2-х офицеров безопасности). Сетевой доступ был разрешен только для бекендов php.

Можете поступить аналогично :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
CityCat4
@CityCat4 Куратор тега Информационная безопасность
Внимание! Изменился адрес почты!
Это стандартная практика. Но нужно иметь в виду три момента:
- файл с паролем должен быть вне веб-сервера
- в файле должен указываться пользователь имеющий права только на БД сайта и только минимально необходимые права
- MySQL должно принимать соединения только с 127.0.0.1
Ответ написан
Комментировать
@karminski
Senior React.JS Developer
Это нормальная практика. Если кто-то получит доступ к файлам на твоем сервере, то тебе уже будет неважно, найдет ли он в этом файле логин/пароль к БД или тупо сбросит рутовый пароль MySQL. Поэтому, отставить параною! Ты всё правильно делаешь.

Между вариантами я бы выбрал 1-ый, но разницы я большой не вижу.

P.s. Обычно файлик с доступами держат в папке, недоступной для веб-сервера. Посмотри, как это реализовано на примере фреймворка Yii (https://github.com/yiisoft/yii2-app-basic). Веб-сервер смотрит только в папку web. Все остальное, в том числе папка config, для него не видно.
Ответ написан
Комментировать
@yegreS
Это обычная практика хранить реквизиты доступа к БД в открытом виде, в php файле.
Просто учитывайте, что БД должно быть доступно только с локального компьютера и обычные пользователи не могут просматривать php файлы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы