2012-01-05 3 views
1

Я пытаюсь включить удаленные php-файлы в качестве ресурса, но у меня есть немного проблем. Я зашел в файлы php.ini и установил allow_url_fopen в ON. Я также искал параметр allow_url_include, но его не было в файле, я добавил его в файл php.ini и также установил его.Включая удаленный файл php как ресурс

Если я пытаюсь включить с помощью

include ('http://somewebsite.com/lib/somescript.php'); 

Сервер/PHP выкладывает сообщение, говорящее:

URL доступ к файлам отключен в конфигурации сервера

I также получите сообщение:

не удалось открыть поток: нет подходящего обертка не может быть найден в бла-бла-бла

seconed путь Я пытаюсь acomplish тот же результат использует Еореп, но я просто получаю содержимое файла, то не что мне нужно Мне нужен мой локальный скрипт, чтобы увидеть удаленный сценарий в качестве исходного ресурса.

$myscript = fopen("http://someotherwebsite/lib/my_script.php", "r"); 
$incmyscript= fread($myscript , 9999); 
fclose($myscript); 
// include in the contents of my_script.php  
echo $incmyscript; 

Должен ли я что-то делать неправильно? Я знаю, что эхоизменение переменной-incmyscript неверно, но я не могу придумать, как разместить код. Я не уверен, что fopen - лучший лучший способ получить то, что я хочу.

Любые идеи?

+0

Можете ли вы включить relavent строки в php.ini .... может быть, установлен неправильно? – ManseUK

+0

allow_url_fopen = onallow_url_include = on – user1132323

ответ

0

Вместо эхо вы могли бы использовать это:

eval($incmyscript); 

Но будьте осторожны, это очень плохая практика! ПРОЧТИТЕ ЭТО: http://php.net/manual/en/function.eval.php

+1

Я бы * никогда * не рекомендовал использовать 'eval' для запроса на межсайтовый сайт. **Когда-либо**. –

1

Вместо echo, вы можете использовать eval.

Только сделайте это, если вы хотите выполнить PHP-код с другого сервера, а не только для того, чтобы просто включить HTML!

Даже если вы действительно хотите выполнить PHP-код с другого сервера, человек-в-середине может выполнить произвольный PHP-код на вашем сервере. Поэтому вам следует лучше использовать HTTPS или вообще не включать удаленный файл.

Пример:

$myscript = fopen("https://someotherwebsite/lib/my_script.php", "r"); 
$incmyscript= fread($myscript , 9999); 
fclose($myscript); 
$incmyscript); 
0

Если вы можете доверять удаленный скрипт, то вы можете позвонить eval:

eval ($incmyscript); 
0
  1. Если http://somewebsite.com/lib/somescript.php обслуживается сервером с поддержкой PHP вы пытаетесь включить его вывод, а не сам код! В противном случае это просто неправильно и может рассматриваться как дыра в безопасности!
  2. Что вы пытаетесь сделать, это открыть главное отверстие безопасности!
+1

Это не дыра в безопасности, если вы доверяете другой стороне (на самом деле это потому, что никакая транспортная безопасность не используется). –

+1

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

+0

Кто скажет вам, что 'someebsite.com' не управляется одним и тем же веб-мастером? –

0

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

+0

Вы также должны написать свой код, чтобы взломщик, имеющий доступ к вашему коду, не смог его использовать. –

+0

Спасибо, ребята, я думаю, что я убежу своего начальника пойти другим путем. – user1132323

1

сообщения вы получаете:

URL file-access is disabled in the server configuration 

Указует, что установка allow_url_include в вашем php.ini установлена ​​значением Выкл. Включение этой опции позволит вам делать удаленное включение файлов, но будьте очень осторожны с этим, так как это довольно большой риск для безопасности, если другой сайт будет скомпрометирован (хакер может легко ввести свой собственный удаленный код на ваш сайт).

+0

Это также дыра в безопасности, если атака может поместить атаку «человек в середине» (поскольку не используется транспортная безопасность). –

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