За последние 24 часа нас посетили 35000 программистов и 1738 роботов. Сейчас ищут 822 программиста ...

Как можно отследить инклуд

Тема в разделе "PHP для новичков", создана пользователем Ігор, 5 янв 2009.

  1. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    пусть в файле index.php есть инклуд
    PHP:
    1.  
    2. <?php
    3.  
    4. $basename="database.db";
    5. .....
    6. .....
    7. include ('readbase.php');
    8. ......
    9. ?>
    В файле readbase.php определены инструкции для чтения базы данных и т.д.
    Вопрос вот в чем, что будет хорошего если вбить в адрессную строку readbase.php
    Как можно защититься от этого и вообще стоит ли?
    Думал сделать так, чтобы сам файл readbase.php определят вызывается он напрямую, или инклудиться.
     
  2. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Ігор
    Отслеживать надо не инклюд, а сессию юзера который обращается к скрипту
     
  3. Вопрос, что будет плохого? Что произойдет в таком случае?
     
  4. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    флоппик
    думаю, отобразится содержимое базы
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    :)
    тоже, что если вбить index.php. Код исполнится. А вот с ошибкой или как-нить ещё, это от тебя зависит
     
  6. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Вряд ли.
    Ведь имя базы установлено не будет :(
    PHP:
    1.  <?php
    2.  
    3.  $basename="database.db";
    4.  .....
    5.  .....
    6.  include ('readbase.php');
    7.  ......
    8.  ?>
    $basename В этом случае будет неопределена и скрипт readbase.php вызовет ошибку.

    Или я все усложняю?
     
  7. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    а потом выяснится что на хостинге включен register_globals и имя базы достаточно передать в адресной строке броузера...
     
  8. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Включено.
    Так что делать я так и непонял? :(
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ВЫКЛЮЧИТЬ
    создай константу
    index
    PHP:
    1. <?
    2. define("INDEX",true);
    3. ?>
    file 2
    PHP:
    1. <?
    2. if(!defined('INDEX'))
    3.    die("Error");
    4. ?>
     
  10. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Как? через htaccess в корне?
     
  11. Regis Filius

    Regis Filius Активный пользователь

    С нами с:
    10 дек 2008
    Сообщения:
    1
    Симпатии:
    0
    В index.php создавай константу index, а в readbase.php проверяй, создана ли она.
    Если теперь попробовать открыть сразу readbase.php, то вылезет ошибка (или любая другая операция, которую ты напишешь), так как контсанта не будет создана. Если же пользователь идет через index.php, то все отобразится корректно. Объявить ее надо до инклуда, естественно.
    Но, по-моему, ничего фатального не произойдет, если кто-то попытается открыть readbase.php напрямую.
     
  12. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Ничего фатального, просто некрасиво будет (немного) сообщения об ошибке (не найден файл и т.д.)
    readbase.php, может просто перенаправить браузер куда надо.

    Кстати, а как выключить REGISTER_GLOBALS?
    (раз разговор уже зашел рпо это).