2010-01-15 3 views
3

Привет, ребята, я отделяю XHTML от PHP, помещая XHTML в отдельный файл, а затем используя функцию PHP include() в скрипте PHP.Ограничения на PHP include()

Это работает отлично, однако пользователи все еще могут получить доступ к файлу .html, если они знают адрес. Они не могут на самом деле сильно с этим справиться, но я бы предпочел, чтобы он не показывался.

Я видел, что некоторые сценарии в прошлом использовали некоторую форму проверки реферера, это то, что я сделал бы, чтобы добавить некоторые основные (Уведомление я сказал «basic»), чтобы предотвратить его просмотр путем доступа к нему напрямую?

Спасибо!

Разъяснение: Я забыл упомянуть, что я хочу сделать это в PHP, поэтому никакой конфигурации веб-сервера (Перемещение файлов из документов корня, настройка веб-сервера, чтобы запретить доступ, и т.д.). Я думаю, что наиболее логичным выбором здесь является использование постоянной проверки define(), это действительно то, что я видел в других сценариях, которые я забыл, как я изложил в своем сообщении. Я понимаю, что это, вероятно, не лучшее решение, но учитывая, что html-файл, который может быть доступен, не имеет особого значения, должно быть достаточно константы define(). Спасибо, я ценю ответы!

+0

Возможно, вы захотите принять ответ ... –

+0

Я только что увидел «Спасибо, что ценю ответы!». и подумал: «Эти парни не собираются принимать ответ», как это делают большинство новичков. Я проверил ваш профиль и понял, что вы не новичок, но сохранил комментарий. –

ответ

3

Если вы в настоящее время разместить все ваши файлы (например, index.php) в /something/public_html/, вы захотите переместить файлы в /something/. Таким образом, пользователи не могут получить доступ к файлам.

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

Как сказал Игнасио, это не сработает с include, если безопасный режим включен.

Другие методы, чтобы поместить что-то в верхней части файла Thats говорит

if(!defined("RUNNING_SCRIPT")) 
    die("No Direct Access Allowed"); 

, а затем в ваших PHP файлов поместить

define("RUNNING_SCRIPT", true); 

Если RUNNING_SCRIPT не определен, это означает, что они непосредственно доступ к нему, и он останавливает загрузку страницы. Это работает, только если PHP работает в файлах .html.

Вы также можете использовать файл .htaccess для запрещенного доступа к этим папкам.

+0

«PHP работает на .html-файлах», html-файл выводит определенные строки с использованием эха php, будет ли это «php runnin в html-файле»? –

+0

Если вы не изменили сервер, PHP работает только на файлах .php' или файлов, включенных в PHP. Это просто, поместите « 'в файле' .html' и посмотреть, будет ли он работать при прямом доступе к нему или если вы просто получите код PHP. –

+0

Некоторые люди создают файл '.htaccess', чтобы PHP запускался на файлах .html, а иногда системный администратор помещает его в конфигурацию PHP. Но, если PHP не запускается в файле, вы не можете использовать PHP для его защиты. –

3

Просто переместите его за пределы корня документа. Это не сработает, если PHP находится в безопасном режиме.

3

Изменить конфигурацию своего веб-сервера, чтобы запретить доступ к этому файлу?

3

Нет, сделать что-то вроде этого:

index.php:

<?php 

define('ALLOW_INCLUDE', true); 

include('other.php'); 

?> 

other.php:

<?php 

if (defined('ALLOW_INCLUDE') === false) die('no direct access!'); 

// your code 

?> 
+0

Помните, что это не сработает, если файлы не обрабатываются PHP. –

1

Это хорошая идея разместить это как первую строку.

Вы также можете использовать .htaccess или удалить страницу index.html в качестве резервных копий.

<?php defined('SOME_CONSTANT_GLOBAL_TO_YOUR_APP') or die('Access denied.'); ?> 

 Смежные вопросы

  • Нет связанных вопросов^_^