PHP, проблема чтения кода файла - PullRequest
0 голосов
/ 18 января 2011

Я использовал этот кусок php-кода для сайта.Теперь его старый, и у меня недавно было несколько нападений.Скрипт использовался для включения другого файла из другого места и отправки спама.Очевидно, это делает мой скрипт отправителем спама.

для содержимого

$htm = ".htm";
$pid = "$details$htm";
function show_details($pid)
{
if (!preg_match("/http/", $pid)) {
require($pid);
} else {
   die;
}
}

и для заголовка, описания, ключевых слов и т. Д.

$txt = ".txt";
$title = "$details$txt";
function show_title($title)
{
if (!preg_match("/http/", $title)) {
if (file_exists($title)) {
require($title);
} else {
   die;
}
}
}

и файла display.php с

print '
<!-- CONTENT -->
';
show_details("$pid");
print '

по этому коду я смог вызвать любой контент по "/display.php?details=mycontentpage"

mycontentpage.htm mycontentpage.txt

.............

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

Кто-нибудь может помочь?Есть комментарии?

1 Ответ

0 голосов
/ 18 января 2011

Чтобы сделать подобные сценарии более безопасными, вы должны убедиться, что для register_globals установлено значение OFF. Это означает, что вам нужно добавить строку вроде:

php_flag register_globals off

... Для .htaccess. Затем объявите все свои пользовательские переменные при первом использовании, например:

$details = $_GET['details']

... Который присваивает данные из части URI "details" переменной PHP $ details.

Я очень хорошо вижу, как ваши злоумышленники смогли проникнуть через ваш код и для register_globals было включено - им нужно было бы просто создать файл .htm с PHP-кодом в нем, который переназначает другие переменные, включая его, тогда альт.

Для получения дополнительной информации см .: http://us2.php.net/manual/en/security.globals.php

Надеюсь, это поможет!

...