Запретить сторонние подключения к базе данных SQL (из файла config.php) - PullRequest
2 голосов
/ 02 мая 2011

У меня вопрос, возможно ли разрешить подключения к БД ТОЛЬКО из определенного домена.Я полагаю, что это можно сделать, проверив URL-адрес реферала, но мне было любопытно, если есть более простой способ.

Причина, по которой я спрашиваю это, заключается в том, что у меня возникла мысль о том, что кто-то случайно ищет файл config.phpфайл на моем сервере и, если они узнают, просто сможет включить его и выполнять запросы MySQL по желанию.Это определенно то, чего я бы не хотел.

Лучше просто спрятать файл конфигурации в необычном месте?

Заранее спасибо, Фил

Ответы [ 4 ]

2 голосов
/ 02 мая 2011

Прежде всего, ваш config.php не должен быть общедоступным из Интернета.Ваш веб-сервер должен иметь возможность включать файл, когда это необходимо, но сам файл никогда не должен обслуживаться на вашем веб-сервере.При правильной конфигурации вам не нужно беспокоиться о том, что кто-то "найдет" ваш config.php через браузер.

Кроме того, на стороне базы данных вы должны настроить базу данных так, чтобы она принимала соединения только с вашего веб-сервера (-ов).Он не должен быть общедоступным для кого-либо в Интернете.

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

2 голосов
/ 02 мая 2011

Полагаю, это можно сделать, проверив URL реферала, но мне было любопытно, есть ли более простой способ.

Нет. Referer - это концепция HTTP, она не имеет смысла, когда вы переходите на уровень базы данных.

Причина, по которой я спрашиваю это, заключается в том, что у меня возникла мысль о том, что кто-то случайно ищет файл config.php на моем сервере

Файл конфигурации не должен быть напрямую доступен через HTTP, и даже если он был, он должен быть выполнен перед обслуживанием. Поэтому не должно быть возможности получить доступ к учетным данным базы данных удаленно.

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

2 голосов
/ 02 мая 2011

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

0 голосов
/ 02 мая 2011

Я бы контролировал доступ с помощью своей пользовательской таблицы.Например: MYSQL 5.5 имеет таблицу mysql.user с именем пользователя, паролем, именем хоста и привилегиями.Если вы должны были установить «имя хоста» каждого пользователя в конкретном домене, т.е.'update mysql.user set hostname = 'somedomain.com' where user = 'root' and hostname = '127.0.0.1';, пользователь root сможет войти в систему только из этого домена (если в таблице пользователей не было нескольких записей для пользователя root). Конечно, если вы используете только одну учетную запись для доступа к базе данныхчерез ваше приложение / веб-сайт, это не будет работать.

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