Как безопасно добавить базу данных на сайт?

127
18 мая 2019, 13:20

Я хочу добавить базу данных на сайт, но для того, чтобы это сделать в .php файле я должен вставить, допустим, такой пример кода:

$servername = "test.co.uk";
$database = "u266072517_name";
$username = "u266072517_user";
$password = "buystuffpwd";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);

Меня лишь беспокоит то, что я вставляю логин и пароль к базе данных. Как мне правильно записать подключение к БД, чтобы мой логин и пароль не перехватили? Может стоит как-то в отдельных файлах все записать?

Я создаю сайт на web-hosting'е

Answer 1

Как правильно записывать это? Я читал, что создаешь, к примеру app_conf.php - в нем пишешь константы с данными к БД и сохраняешь этот файл на одну и более папку выше, чем корень сайта

Если вопрос в этом, то ответ можно дать:

Во-первых, хочу подчеркнуть: нет такого: правильно или нет, вы как программист должны в первую очередь уметь обосновать почему именно ТАК, а не как иначе. Поэтому я постараюсь дать объяснение почему так, а не как иначе.

Предположим что у нас есть такая условная директория:

../www/mysite.ru/

В этой папке мы размещаем наши файлы проекта, но у такого подхода есть минус:

Например если есть файл конфигурации, предположим ваш app_conf.php который лежит в папке config, т.е. полный путь ../www/mysite.ru/config/app_conf.php то к нему можно обратить внешне, т.е. через браузер: mysite.ru/config/app_conf.php. Да, вы с помощью вебсервера можете запретить доступ в этому файлу, но это уже плохо (по ряду причин), и плюс для сайта потерян урл такого вида. Поэтому традиционно немного разделяют - то что для пользователя и то что системное, условно так:

[wwww]
    [mysite.ru]
        [config]
            app_conf.php
        [public]
            index.php

Как видите, у нас есть папка public которая содержит только то, что нужно видеть пользователю, там дизайн (стили скрипты), картинки, и прочее, НО всегда есть один файл, в нашем случае index.php - который является точкой входа для генерации динамических страниц. Вот он уже обращается к config/app.conf.php и т.д. Как вы видите, да, системные файлы (т.е. те файлы которые не нужны для пользователя, выносятся на уровень выше).

Такая структура конечно выигрывает во всем, у нее нет минусов перед структурой где все в кучке. К скриптам прямого доступа нет, веб-сервер лишними проверками нагружать не надо, выглядит все более менее логично и понятно, НО я хочу подчеркнуть то что писал в комментарии:

...А взломать он его сможет если не будете уделять должное внимание безопасности при написании своего кода...

Это я писал к тому, что перед злоумышленником не будет разницы как у вас расположены файлы и в каких директориях если он сможет выполнять php-скрипты. Ну как банальный детский пример, у вас есть загрузка файлов, он загружает туда файл с расширением php --> получает путь --> обращается к нему --> php-скрипт выполняется (да такое тоже защищается веб сервером, на все есть ответ, но все-же просто для примера). Возвращаясь к нашему примеру: для хацкера не будет разницы где у вас там файлы расположены он все равно получит к ним доступ.

Перехватить на каком-то там лету не получится в обоих случаях, но если получить доступ к сайту - получить он сможет все. Поэтому уделите особое внимание безопасности.

READ ALSO
не доходят сообщения с Sendmail

не доходят сообщения с Sendmail

Сообщения якобы встают в очередь, но на почту не доходят

143
Не могу передать данные input type file с JS в PHP

Не могу передать данные input type file с JS в PHP

Есть форма, 90% формы обрабатывается php, поле с вложениями обрабатывается js, так как заказчик хочет видеть и редактировать аттачи перед отправкойПри...

115
Как заменить url типа — «/page.php?id=4» на «/contact» и т.п.? [закрыт]

Как заменить url типа — «/page.php?id=4» на «/contact» и т.п.? [закрыт]

Подскажите, как заменить url типа — «/pagephp?id=4» на «/contact» (или другое, взависимости от столбца title в БД)

121
Несколько роутов или один роут и условия в нём?

Несколько роутов или один роут и условия в нём?

Недавно возник довольно интересный вопрос о том, как лучше строить Rest APIУсловно говоря, есть два варианта: 1

122