Автор Тема: Защита инклудов  (Прочитано 6038 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Защита инклудов
« : 31 Декабря 2005, 01:23:58 »
Хотел поинтересоваться, как можно закрыть инклудящиеся файлы(исполняемые) ? Т.е. есть к примеру в корне page.php который при выполнении инклудит  что-то из includes/1.php, includes/2.php и т.д. Т.е. сами файлы 1.php и 2.php не расчитаны на самотоятельный запуск и сами ничего хорошег осделать не смогут, а должны запускться как инклуд page.php

Способы для защиты от несанкционированного запуска 1.php, 2.php и тд :

1. первое что приходит в голову - закрыть  в .htaccess диру с инклудами для внешних запросов.

2. В главном скрипте сразу объявлять некую глобальную переменную, а в инклудах проверять ее. Но т.к. могут быть недочеты из-за registe_globals , то легче наверное для этого(больше ничего в репу не приходит) объявить в page.php $_SESSION[\'somevar\'] = \'somevalue\';  , а в инклудах проверять ее... и в случае ее отсутссвия сразу прекращать работу скрипта, типа exit;

Какие еще варианты могт быть ?

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Защита инклудов
« Ответ #1 : 31 Декабря 2005, 10:45:30 »
LJ: Backslashed life (rss)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Защита инклудов
« Ответ #2 : 31 Декабря 2005, 11:37:16 »
Цитировать
vg2k:
Но т.к. могут быть недочеты из-за registe_globals

про недочёты, пожалуйста, поподробнее.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Защита инклудов
« Ответ #3 : 31 Декабря 2005, 15:02:46 »
RomikChef
Ром, он намекает на то, что проверка вида if($include_flag) завалится при register_globals ($_GET[\'include_flag\']=>$include_flag).

vg2k
Да, проще, быстрее и надежнее, наверно, закрыть dir. Deny from all.
LJ: Backslashed life (rss)

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Защита инклудов
« Ответ #4 : 01 Января 2006, 19:53:18 »
Вот-с цитата  из ссылки CGVictor\'а.
Цитировать

путь раз - ставить в мастер-скрипте переменную, и проверять ее наличие в подключаемом
путь два - парсить соотв серверные переменные на предмет наличия в них, скажем, "index.php"
путь три - если подключаются только файлы опр типа (напр., .php), то можно прописать в .htaccess инструкции, пересылающие все запросы типа *.php на определенный урл
Можно (четвертым) еще грамотно поиграться с правами на файлы (что, конечно, правильнее!), но это зависит от хоста и от прямоты рук.


путь раз и три (немного иначе) я приводил в свое посте.

Так вот там самая трабла с регистер глобалсами в путе "раз" заключается в том, что в случае включенности регистер глобалсов эту самую переменную(если она просто проверяется как $var) злоумышленник спокойно сможет присвоить из GET,POST запроса или кукисами. Поэтому нуна ставить эту переменную в сессионный массив или в другое место которое недоступно для изменений извне любьым образом. Поэтому хотел бы узнать куда бы вы это поместили.

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

А касательно четвертого способа хотел бы уточнить. Имеется ввиду установка на каталог инклудов и со всеми входящими файлами права типа -rw (можно более низкими) лишь бы "x" (execute) не было ? Или инклуд то же воспринимается как исполнение файла ? Тогда это будет зависеть как раз от имени какого юзера выполняются скрипты на серваке ? Т.е. нуна будет создавать файлы от имени пользователя или группы той, что инклудит скрипты  и давать им права выполнения. А имя пользователя(группа) исполняющая все запросы внешние запросы на сервере должны отличаться и не иметь права на запуск ?
« Последнее редактирование: 01 Января 2006, 20:09:23 от vg2k »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Защита инклудов
« Ответ #5 : 01 Января 2006, 21:44:55 »
Цитировать
vg2k:
оэтому нуна ставить эту переменную в сессионный массив

сессии здесь вообще никаким боком.
сессии, блин, нужны совсем для другого!

если так страшно из-за регистер глобалс, то используй коснтанты
Цитировать
vg2k:
А касательно четвертого способа хотел бы уточнить. Имеется ввиду установка на каталог инклудов и со всеми входящими файлами права типа -rw (можно более низкими) лишь бы "x" (execute) не было ?

постарайся самостоятельно понять, сколь глубокую глупость ты сейчас сказал

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Защита инклудов
« Ответ #6 : 02 Января 2006, 03:37:53 »
Цитировать
сессии, блин, нужны совсем для другого!p

Оригинально, я зациклился на переменных и забыл про константы ;( Фенкс, оригинальный способ.  Понимаю, что сессии никаким боком, однако учитывая что в моем случае сессия открывается в любом случае - совсем не позрно выделить в памяти немного место под одну переменную на сеанс. Но твой вариан тбесспорно лучше.  

Какую дребедень я там сказал сейчас как и тогда не пойму ибо не в состоянии - праздники все же.

RomikChef , немного оффтопа. Небольшая поговорка вкратце:  "упавшему нужно подать палку, а не руку".  Это так на будущее. Не принимай близко к сердцу, но просто... люди которые с тобой часто общаются наверое привыкли к этому. Однако, для "новичков" общения с тобой ты просто не выносим. У тебя есть одна очень нехорошая привычка куковать по чем зря без всякого смысла. Если люди что-то конкретное спррашивают - нужно либо помогать, либо молчать. А ты, возврашясь к вышеописанной поговорке, выполняешь роль кукшки проку от которой полный ноль. Примером этого может стать даже соседний на данный момент твой пост http://forums.webscript.ru/showthread.php?s=&threadid=22208 , думаю объяснять почему не стоит(таких примсеров можно привести туеву хучу т.е. порядка 2500 т.к. я уверен что не менее чем 50% случаях ты льешь воду). Это все было  казано не для оскорбления твоего не нуждающегося в повышении самодостоинства, а для улучшения атмосферы и дружелюбности форума т.к. ты являешь одним из самых активных его участников.
« Последнее редактирование: 02 Января 2006, 03:46:59 от vg2k »

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Защита инклудов
« Ответ #7 : 02 Января 2006, 12:55:16 »
Цитировать
vg2k:
в случае включенности регистер глобалсов эту самую переменную(если она просто проверяется как $var) злоумышленник спокойно сможет присвоить из GET,POST запроса или кукисами

Они по умолчанию отключены, кстати.

Если хочешь абсолютной надежности - есть способ узнать, какие переходы и вызовы (function, eval, include) вызвали текущий кусок кода.
Однако сейчас навскидку имя функции не скажу (я ей пользовался раз в жизни), надо на php.net искать...
LJ: Backslashed life (rss)

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Защита инклудов
« Ответ #8 : 02 Января 2006, 12:58:01 »
LJ: Backslashed life (rss)

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Защита инклудов
« Ответ #9 : 02 Января 2006, 18:25:40 »
Цитировать
Они по умолчанию отключены, кстати.


Ну это дело замены off на on в одной строке php.ini  , а как жизнь и необходимость обязуют в ближайшее время вести себя - никто не знает. Мало ли припрет.

CGVictor , фенкс буду иметь ввиду. Думаю всего этого вполне хватит дабы в этом направлении не беспокоится и параноидализм не мучал ; )

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Защита инклудов
« Ответ #10 : 03 Января 2006, 09:37:20 »
vg2k
Ok, enjoy slowly

[off][m]
Модераторы, мож тему в faq?...[/off]
LJ: Backslashed life (rss)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28