
Komentářový SPAM napadá houfně řadu webů. Přesněji - těch, které nemají dostatečné zabezpečené zdrojové kódy. V čem spočívá politika bezpečnosti? Mít např. dobře ošetřený php skript. To platí samozřejmě i pro redakční systémy phpRS. Jak se pokusit proti SPAMU bojovat? To nazančuje tento článek.
Spameři, přesněji roboti, kteří přes Síť umísťují na weby různé útočnické kódy, skripty a texty, pronikají rychle také do komentářů ve fórech a diskuzích. Stále častěji se objevuje tzv. [komentářový spam]. Na tomto webu se již o něm několikrát psalo. Problém je však (a asi dlouho bude) aktuální. Viz stesk jednoho z autorů webu:
Metódy dvou autorů
Před rokem v květnu vyšla na serveru phpRS.cz analýza tohoto problému s návodem, jak komentářový SPAM minimalizovat pro verzi phpRS 2.6.5. Nyní se na sesterském webu Comunity web objevilo UPDATE - 09.07.2006. Autor řešení Michal Šafus využil metódy Jakuba Vrány, přidal vlastní ochranu proti starým robotům - a na světě je bariéra proti spamopvým robotům. Podrobně je to i s návodem popsáno v článku Spam v komentářích, který řeší tento problém pro verzi phpRS 2.8.0. Použil jsem návod, dodržel postup a téměř beze změn řešení použil. Funguje! SPAM se v komentářích zatím neobjevuje. Zatím...
Řešení
Řešení spočívá v úpravě souboru comment.php. Otevřeme soubor comment.php a najdeme řádek 340 a 399 (jednou přidání nového komentáře, podruhé přidání reakce na komentář) s přibližným obsahem (verze phpRS 2.8.0, v jiných to bude podobné) .
<p align="center"><input type="submit" name="pridej" value=" ".RS_ODESLAT." " class="tl" /><input type="reset" value=" ".RS_RESET." " class="tl" /></p>
Tento řádek upravíme za následující:
<p align="center"><input type="hidden" name="odeslano" value="1"><input type="submit" name="pridej" value=" ".RS_ODESLAT." " class="tl" /> <input type="reset" value=" ".RS_RESET." " class="tl" /><input type="submit" name="nepridavat" value="1" class="tl" style="display:none;"/></p>
A opět pokračujeme ve stejném souboru comment.php, kde jdeme na řádek 450. Zde celý kód odstraníme a nahradíme jej následujícím skriptem.
// pridani komentare
@$error=phprs_sql_query($dotaz,$GLOBALS["dbspojeni"]);
else:
$error=0;
$robot=1;
endif;
if (!$error):
// chyba - neuspesny sql prikaz
echo "<p align="center">".RS_KO_ERR1."</p>n";
if(isset($robot)):
echo "<p align="center">Byli jste označeni jako robot!</p>n";
/* ---- smazat tento radek v pripade zajmu o zasilani
include_once("admin/astdlib_mail.php");
$odeslani_posty = new CPosta();
$odeslani_posty->Nastav("adresat",$GLOBALS['redakceadr']);
$odeslani_posty->Nastav("predmet","Novy blokovany komentar");
$odeslani_posty->Nastav("obsah",$GLOBALS["kod"]."nrnr".$GLOBALS["kobsah"]."nrnr".$GLOBALS["cisloclanku"]);
$odeslani_posty->Odesilac();
-------smazat tento radek v pripade zajmu o zasilani */
endif;
else:
Přidání této části přidaného skriptu končí na ř. 489 (else:). Jak sděluje autor: „Návod je určen pro phpRS 2.8.0! Verze 2.6.5 neobsahuje vlastní řešení databázových funkcí a funkce - phprs_sql_cokoliv - zde selhávají! Je potřeba s tím při úpravě samozřejmě počítat.“ Já mám staženou verzi phpRS 2.7.0 a upravený soubor "comment.php" funguje bez problémů.
Resumé
Tím je vše dokončeno. Skript by vám měl fungovat. Autor uvádí, že postup vyzkoušel u sebe na počítači, takže neručí za 100% funkčnost. Mohu však sdělit, že mě funguje nejen na intranetu, ale i internetu (konkrétně na tomto serveru). Tato ochrana proti komentářovému SPAMu se tedy zdá zatím bezpečná. Uvidíme, co ukáží následující dny. Zatím zeď odolává! Autor žádá uživatelé tohoto postupu, aby v případě problémů psali, tudíž na Michal Šafusa to i když metoda bude fungovat. Je to důležité pro ověření.
Zatím nikdo nekomentoval. Buďte proto první a vložte svůj komentář.
Aby jste mohli přidávat komentáře, musíte být přihlášený.
Musíte být registrovaný, aby jste mohli hodnotit.
Prosím přihlašte se, a nebo se zaregistrujte.
Zatím nikdo nehodnotil.