Безопасный include с другого сервера - как?

flower

Новичок
Безопасный include с другого сервера - как?

Допустим, есть сервис service.ru, код которого включается в страницы пользователей через include

@include 'http://service.ru/code.php?var1=1&var2=2';

Если service.ru висит, сайты пользователей тоже повиснут на какое-то время, пока будут пытаться инклюдить вышеобозначенный урл. Как безопасно инклюдить его с таймаутом, допустим, 5 секунд? Если не отвечает - игнорировать и продолжать работут дальше. Может, вместо include имеет смысл использовать что-то другое?
 

Popoff

popoff.donetsk.ua
flower
зачем тебе это?

MuXaJIbI41981
можно, но, как правило, не нужно, не говоря уже о жуткой небезопасности.
 

SiMM

Новичок
> Как безопасно инклюдить его
Безопасно - вообще не инклудить.
 

Найч

Алгоритмик :-)
а стягивать по крону раз в день, например, и инклудить локально сохраненный?

-~{}~ 02.07.07 10:33:

или зависимость от передаваемых параметров?
 

nalim

Новичок
Ну, по идее можно так:

Сначала с проверкой загружаем его с другого сервера
через httр любым способом
Сurl, Socket и т.п.
Там везде можно наладить грамотный тайм аут.

А потом делаем eval();
или include(); скачанного локального файла

В плане тормозов изза недоступности - это безопасно=)
 

SiMM

Новичок
> а стягивать по крону раз в день, например, и инклудить локально сохраненный?
И выполнять неизвестный код, ога. Может проще сразу все явки/пароли отдать, чтобы люди не мучались?
 

Найч

Алгоритмик :-)
SiMM
внимательней, внимательней... и явки с паролями приплетать не придется
движение 1 - стягиваем результат инклуда
движение 2 - сохраняем

2 варианта - либо человек стягивает код и каждый раз его выполняет, либо стягивает уже результат. В любом случае, сохранение этого с последующим локальным инклудом сделает то же самое

Для параноиков (или _нецензурное слово_) можно сделать sandbox
Но вероятнее всего, стягивается яваскрипт.
 

Popoff

popoff.donetsk.ua
@include 'http://service.ru/code.php?var1=1&var2=2';
А потом делаем eval();
вероятнее всего, стягивается яваскрипт.
JavaScript можно выполнить на сервере при помощи include() и eval(), это совершенно безопасно, об опасностях задумываются только параноики. Ну да, я как-то раньше не задумывался.

Найч
не морочь человеку голову, он и без тебя путается.
 

SiMM

Новичок
> движение 1 - стягиваем результат инклуда
> движение 2 - сохраняем
PHP:
<?php
echo '<?php print_r(glob("*"))?>';
?>
> Но вероятнее всего, стягивается яваскрипт.
А нафига, простите, javascript инклудить?
 

Найч

Алгоритмик :-)
Popoff
ты вторую цитату не того человека вставил. Автор только 1 пост написал, и там ничего про инклуд нет. Ты тоже через строчку читаешь? ;)


SiMM
про пример можно пояснить мысль?
а про яваскрипт - так инклуд может использоваться как обычная вставка в шаблон. Нафига - хороший вопрос. Может, автор еще вернется
 

SiMM

Новичок
Найч, просто выполните свой алгоритм с этим удалённым кодом.
 

Найч

Алгоритмик :-)
что-то у меня пока получается ожидаемый результат
Покажи, плз, на пальцах
 

Wicked

Новичок
Найч
ожидаемый - это какой? На мой взгляд - что удаленный скрипт заставит локальный скрипт вывести список файлов. А это компроментация в чистом виде.

Именно поэтому между вариантами
либо человек стягивает код и каждый раз его выполняет, либо стягивает уже результат.
нету разницы с точки зрения безопасности. Это все одна большая дыра.
 

Найч

Алгоритмик :-)
Wicked
у нас дисскуссия немного не об этом. О безопасности речь не идет - тут всем все ясно.
Я не согласен с фразой SiMM'a о том, что, _в отличие_ от инклуда, стянутый ранне код придется выполнять у себя на сервере.
 

Wicked

Новичок
Найч
тогда я потерялся в вашей с SIMM'ом дискуссии :)

-~{}~ 04.07.07 15:39:

но очевидно, что фраза
стягиваем результат инклуда
не имеет ни грамма смысла.
Результат инклюда, локального или удаленного, всегда уже находится на локальной машине. И "стягивать" его более не нужно. Поясните?

-~{}~ 04.07.07 15:44:

Найч
и еще... на всякий случай...
PHP:
file_put_contents("local.php", file_get_contents("http://service.ru/code.php?var1=1&var2=2"))
include "local.php"
и
PHP:
include "http://service.ru/code.php?var1=1&var2=2"
- эквивалентны.
 

Altex

Новичок
flower
Может, вместо include имеет смысл использовать что-то другое?
Да, конечно. Если удаленный сервер отдает не php скрипт, то выполнять его не нужно. Просто делай echo и всё.
 

Wicked

Новичок
Altex
Выполнять его не нужно независимо от того, пхп код он отдает или нет. Про не-пхп ты уже сказал. А в случае, если отдает пхп - то просто в топку такой сервис.
 
Сверху