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

Как мне защитить файл подключения к бд?

У меня есть сайт, на котором есть система авторизации (естественно с подключением к БД MySQL). Файл для подключения никак не защищён от сторонних пользователей, и на этот файл можно попасть с помощью обычной ссылки. Как мне его защитить?
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Такие файлы кладут вне директории, которую обслуживает веб-сервер. Примерно так:
./db.php
./public/index.php

В db.php вы подключаетесь, реквизиты храните в нём же или в .env-файле рядом (или ещё как-то), а в настройках веб-сервера в качестве корневой директории указана public. Тогда через него невозможно будет обратиться к "секретному" файлу.
(есть ещё всякие уязвимости, которые делают такую защиту всё же не стопроцентной, но они далеко за рамками данного вопроса).
Ответ написан
402d
@402d
начинал с бейсика на УКНЦ в 1988
<?php
$mysecret = 'supersecret';

Минимальный совет из "PHP Правильный путь" звучит как храните свои конфиги хотя бы в виде php файлов.
Предположим, что мы сохранили такой скрипт в корне www.
При правильной настройке сервера посетитель увидит пустой экран по урлу //your.site/script.php
так как в нашем файле нет команд вывода.
В первой строке полный синтаксис, в варианте "<?" может случиться ситуация показа исходного текста, если сшорт таги отключены. И остается риск того, что php отвалиться и будет показываться исходный код.

Обще принятой практикой сейчас считается подход, когда все исходные файлы лежат выше диретории www рут.
В самой директории только один скрипт точки входа (index.php)

Ваши пароли скорее утекут по другой причине, чем из-за того, что к скрипту обратяться на прямую.

Вы используете eval c данными от пользователя или на сайте можно загружать через форму файлы.
На шаред хостинге ошиблись с разделением прав для ftp.

У Вас используются системы контроля версий кода и конфиги не добавлены в игнорируемые.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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