Безопасное включение переменных входа в базу данных - PullRequest
2 голосов
/ 29 августа 2009

при подключении к базе данных я include('connect.php') документ для подключения. Теперь я хочу сделать это немного безопаснее. Можно ли проверить, что тот, который хочет включить connect.php, из моего домена. Как:

if($_SERVER["HTTP_REFERER"] == "mydomain.com"){
    $link = mysql_connect("localhost","user","password"); 
    mysql_select_db("dbname");
}

И если это возможно, как я могу проверить, что $_SERVER["HTTP_REFERER"] == mydomain.com, когда $_SERVER["HTTP_REFERER"] может вернуть mydomain.com/page.php?

Ответы [ 2 ]

5 голосов
/ 29 августа 2009

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

В итоге: не беспокойтесь об этом. :)

EDIT:

Примерно так:

RewriteEngine On
RewriteRule ^connect.php /index.php [R]

Это может измениться с вашими подробностями, просмотрите множество вопросов по этой теме.

1 голос
/ 30 августа 2009

Мне кажется, что вы делаете это задом наперед.

Самый простой способ обезопасить ваш connect.php - переместить его на одну папку вверх (за пределы корневого каталога) и использовать include('../connect.php') вместо include('connect.php'). Сделайте это, и вы в безопасности (по крайней мере, относительно connect.php).

HTTP_REFERER не имеет ничего общего с безопасностью. Проверка на это просто заставит посетителя получить Database connection error вместо запрашиваемой страницы, если проверка не пройдена. Каждый раз будет отказывать:

  1. кто-то заходит на ваш сайт по ссылке на другом сайте (включая Google и компанию)
  2. кто-то заходит на ваш сайт, нажимая на закладку браузера
  3. кто-то заходит на ваш сайт и печатает адрес прямо в адресной строке

Почему-то я не верю, что это то, что вы можете захотеть.

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