define+inсlude

Статус
В этой теме нельзя размещать новые ответы.

2k

Guest
define+inсlude

Вопрос

Почему надо не дать файлу запуститься на прямую:
положем, у нас есть панель управления, доступ к которой очуществляется с использованием логина и пароля. в файле index.php мы можем хранить код проверки правильности пароля, а в file1.php и file2.php - разные органы управления сайтом, подгружаемые в зависимости от запроса.
На самом деле, вопрос имеет чисто теоритический характер. Интересно понять, как решить такую задачу. (подчёркиваю: не поставить задачу иначе, а решить именно эту)

Приношу свои извинения Фанату.
 

slayeek

Новичок
При запуске файла PHP произойдет его интерпритация. И если у тебя в нем никакого вывода нету, а только логика - то стороннему посетителю будет отобажена пустая страница.
 

2k

Guest
Автор оригинала: slayeek
При запуске файла PHP произойдет его интерпритация. И если у тебя в нем никакого вывода нету, а только логика - то стороннему посетителю будет отобажена пустая страница.
положем, в файлах fileN.php есть вывод данных. Меня интересует, можно ли отключить выполнение скрипта в случае, если он запускается не инклудом с index.php?

-~{}~ 20.03.06 16:37:

Автор оригинала: slayeek
http://site.ru/file.php - Запускаем напрямую. :)
И все же, напрямую он не откроется. Ведь в нём нет строки define('A');
 

ZN

Новичок
>Меня интересует, можно ли отключить выполнение скрипта в случае, если он запускается не инклудом с index.php?
в скрипте index.php делать define('INDEX_INCLUDED',1);, а в fileN.php проверять if (!defined('INDEX_INCLUDED')) die();
 

2k

Guest
Автор оригинала: ZN
>Меня интересует, можно ли отключить выполнение скрипта в случае, если он запускается не инклудом с index.php?
в скрипте index.php делать define('INDEX_INCLUDED',1);, а в fileN.php проверять if (!defined('INDEX_INCLUDED')) die();
Ну чёрт! Так ведь весь вопрос заключается в том, можно ли как-то обочти этот метод?
 

Kelkos

Сам себе программер
можно ли как-то обочти этот метод?
во всех известных форумах приеняется такой метод.. ИМХО - это самый удобный метод.
Если хацкеры смогут обойти его (кривой аплоад, eval и т.д.), то ничто другое не спасёт.
 

2k

Guest
Автор оригинала: Kelkos
во всех известных форумах приеняется такой метод.. ИМХО - это самый удобный метод.
Если хацкеры смогут обойти его (кривой аплоад, eval и т.д.), то ничто другое не спасёт.
Ясно.. Сто пудов? Может всё-таки найдётся кто-нибудь, кто с этим не согласен? Просто начальник отдела сказал, что это модно обойти.. как-то в подробности не вдавался пока.
 

romy4

invoke [brain]
2k против танка не попрешь. значить пишем модуль-пхп для обхода:)
 

White Rabbit

белый кролик
2k
Ну, допустим, обошли..
И что?
Если обходят удаленно (ро ХТТП, с другого сервера), то получат только вывод скрипта, а если с той же машины,
то гораздо проще сделать просто file_get_contents() и получить исходник;)
Так что это - не защита вообще, а просто красивое слово,
заставляющее человека думать, что он от кого-то там защитился
 

2k

Guest
Автор оригинала: White Rabbit
2k
Ну, допустим, обошли..
И что?
Если обходят удаленно (ро ХТТП, с другого сервера), то получат только вывод скрипта, а если с той же машины,
то гораздо проще сделать просто file_get_contents() и получить исходник;)
Так что это - не защита вообще, а просто красивое слово,
заставляющее человека думать, что он от кого-то там защитился
речь идёт об удалёном запуске, естественно.. иногда страница обращается к базе, а это уже не просто вывод контента..
 

Теркин

Новичок
Поместите файл в директорию недоступную по HTTP или запарольте папку или спрячьте папку с файлами с помощью mod_rewrit. Тогда его точно напрямую никто не запустит и константы не нужны.
 

2k

Guest
Автор оригинала: admin
файл zloy_hack.php:

define('A', true);
include('file.php');
А тогда какой смысл это использовать? Я видел это в пхпбб, а они серьёзные ребята..
 

SiMM

Новичок
.htaccess
deny from all
в папке с модулями.
Либо выносишь модули за webroot.
 

2k

Guest
Автор оригинала: SiMM
.htaccess
deny from all
в папке с модулями.
Либо выносишь модули за webroot.
ну это очевидный способ. Тогда никто кроме моего сервера не сможет обращаться к скрипту.
И никак кроме инклуда?

-~{}~ 21.03.06 10:06:

Автор оригинала: Фанат
ха ха
мдя...:)))
 

SiMM

Новичок
> Тогда никто кроме моего сервера не сможет обращаться к скрипту.
А разве требовалось что-то другое?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху