Обратился ко мне на днях приятель с просьбой разобраться, почему его сайт не работает. При детальном рассмотрении оказалось, что по неведомым причинам в конец строки более чем 1000 файлов сайта с расширениями *.php и *.html был внедрен сторонний код:
Код:
<script src="http://microsprogram.com/editpage.js"></script>
Поскольку вручную менять код файлов - титанический и глупый труд, а лень, как известно, двигатель - прогресса, решено было написать небольшой скрипт под названием files123.php, удаляющий одинаковый зловредный код из всех файлов сайта.
Вот что получилось:
Код:
<?php
$root = $_SERVER['DOCUMENT_ROOT'];
$search = '<script src="http://microsprogram.com/editpage.js"></script>'; //строка, которую нужно найти в каждом файле и заменить на ''
$thisfile = 'files123.php'; //чтобы в процессе не заменить искомую строку в этом же файле
function find_and_replace($dir,$search,$thisfile)
{
$new_dir = null;
$dir_files = opendir($dir);
while(false !== ($file = readdir($dir_files)))
{
if($file != '.' && $file != '..')
$new_dir[] = $dir."/".$file;
}
if($new_dir)
foreach($new_dir as $check )
{
if((is_file($check)) && (basename($check) !== $thisfile) && ((strtolower(substr($check,-4)) === '.php' ) || (strtolower(substr($check,-4)) === '.tpl') || (strtolower(substr($check,-5)) === '.html') || (strtolower(substr($check,-3)) === '.js'))) {
$handle = fopen($check, "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
if (strpos($contents,$search) !== false) {
$file = fopen ($check,"w+");
$str = str_replace($search,'',$contents);
fputs($file, $str);
fclose ($file);
echo $check."<br>";
}
}
elseif(is_dir($check))
find_and_replace($check,$search,$thisfile);
}
}
find_and_replace($root,$search,$thisfile);
$root = $_SERVER['DOCUMENT_ROOT'];
$search = '<script src="http://microsprogram.com/editpage.js"></script>'; //строка, которую нужно найти в каждом файле и заменить на ''
$thisfile = 'files123.php'; //чтобы в процессе не заменить искомую строку в этом же файле
function find_and_replace($dir,$search,$thisfile)
{
$new_dir = null;
$dir_files = opendir($dir);
while(false !== ($file = readdir($dir_files)))
{
if($file != '.' && $file != '..')
$new_dir[] = $dir."/".$file;
}
if($new_dir)
foreach($new_dir as $check )
{
if((is_file($check)) && (basename($check) !== $thisfile) && ((strtolower(substr($check,-4)) === '.php' ) || (strtolower(substr($check,-4)) === '.tpl') || (strtolower(substr($check,-5)) === '.html') || (strtolower(substr($check,-3)) === '.js'))) {
$handle = fopen($check, "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
if (strpos($contents,$search) !== false) {
$file = fopen ($check,"w+");
$str = str_replace($search,'',$contents);
fputs($file, $str);
fclose ($file);
echo $check."<br>";
}
}
elseif(is_dir($check))
find_and_replace($check,$search,$thisfile);
}
}
find_and_replace($root,$search,$thisfile);
Пользуйтесь. Надеюсь кому-нибудь понадобится.
Comments
< script src="http://mic rossofting.com/ sitecookies.js" >< /script >
Придется похоже проводить аудит безопасности сайта моего знакомого...
< script src="http://inc ludest.com/foot er.js" >< /script >
Даже забавно... постоянно терь будем лечиться. :-)))
RSS feed for comments to this post