Соединение с базой данных и функции разрушаются / удаляются, когда я изменяю детали соединения? - PullRequest
0 голосов
/ 03 июля 2018

Итак, я хочу задать вопрос о соединении с базой данных с помощью msqli и php. Поэтому, когда я устанавливаю соединение с

$db = parse_url(getenv("DATABASE_URL"));
$db_host = $db['host'];
$db_user = $db['user'];
$db_pass = $db['pass'];

$conn = new mysqli($db_host, $db_user, $db_pass);

if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

Все работает. Но если кто-то может отобразить / показать переменные, это небезопасно, потому что тогда у человека есть доступ к информации и базе данных. Что если я сделаю это:

$db_host = "";
$db_user = "";
$db_pass = "";

после установления соединения. это безопаснее, чем ничего не делать?

Если есть другой способ его обезопасить, я был бы рад узнать

Спасибо - Самир

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Примечание. Рекомендуется принимать дополнительные меры предосторожности, когда задействованы БД и / или Сессия и т. Д. Может реализовать надлежащую проверку на бэкэнде для проверки доступа пользователя с действительного URL / IP-адреса и т. Д. Или выполнить метод усечения, чтобы разрешить перенаправление на страницу входа и соединение с БД, если оно действительное, иначе переадресовать их на сторонний сайт , Уничтожьте или очистите сеанс, когда он не проходит.

0 голосов
/ 03 июля 2018

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

Прежде всего, проблема в том, что вы не доверяете разработчикам, работающим над этим кодом.

Во-вторых, если вы разделите свой код на несколько проектов и репозиториев, вы сможете контролировать, какой разработчик имеет доступ к какому проекту / репо. То, как я делал это в прошлом (но по разным причинам), - это наличие проекта, который отвечает за подключение к базе данных и извлечение / хранение / обновление любых данных, и все мои другие модули / проекты вызывают его, чтобы получить некоторые данные из база данных. Это было бы как частный API между вашей базой данных и приложением.

Другим решением было бы ограничить тип запросов, которые может выполнять конкретный пользователь базы данных, если вы беспокоитесь о том, что они обращаются к базе данных и используют ее для запуска запроса, который не выполняется в базе данных, тогда просто не t разрешить этому пользователю выполнять любые запросы, которые находятся за пределами кодовой базы (т. е. если пользователь только просматривает tableX в коде, предоставьте этому пользователю привилегию просмотра только для tableX)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...