Autor Zpráva
Radim24
Profil
Právě jsem sestavil kód, který má za cíl odstranit ze souboru, ze kterého je spouštěn, kód který tam vložil vir <iframe>kód</iframe>.

Problém je v tom, že se přitom odstraní také pravidlo regulárního výrazu, takže script lze úuspěšně použít jenom jednou. Potřeboval bych to dořešit a dodat tam, že reg. výraz nesmí předcházet a následovat závorky { } (označení fnc)

Mátě někdo nějaký nápad?

<?php
echo "Testování index.php kvůli napadení stránek virem. Vyčkejte.<BR>\n";
echo "<iframe>Testování index.php kvůli napadení stránek virem. Vyčkejte.</iframe>\n\n";


function repear($file)
{
echo "Spouštím čistič and die()<BR>\n";
$fd = fopen ($file, "r");
$contents = fread ($fd, filesize ($file));
fclose ($fd);

$search = array ("'<iframe[^>]*?>.*?</iframe>'si",  // Strip out enemy code
                 );

$replace = array (""
                  );

$write = preg_replace ($search, $replace, $contents);

$fp=fopen($file, "w");
fwrite($fp,$write);
fclose($fp);
 
}

$file = "index.php";
if ( filesize($file)>600 ) repear($file);
header ("index.html");

?>
tiso
Profil
Radim24 - odstráň príčinu zavírovania webu, nie až jeho dôsledok...

A čo sa nápadu týka, tak ti stačí použiť spájanie reťazcov pre regulárny výraz:
$search = array ("'<if"."rame[^>]*?>.*?</iframe>'si");
Radim24
Profil
tiso
Jasně, odstranění viru je řešením, ale je to pro případ že by se znovu zaviroval počítač. Je to na mých stránkách, kde kód bortí výstup, a tím kazí vzhled stránek. proto v případě útoku chci okamžité řešení.


Tomu nerozumím (můžeš mi to vysvětlit o co tam jde?) ale přišel jsem na svoje řešení:

'<iframe[^>]*?>.*?</iframe>(?!\()'si

Nesmí být následován závorkou...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: