PHP Spam killer

spam infekce Návod na jednoduchý PHP spam killer. Máte vlastní redakční systém, používate CMS které nemá integrovanou podporu CAPTCHA? Zde je jednduchý návod jak zprovoznit primitivní (100% efektivní ochrana) v PHP. Kód zabráni uložení příspěvku do databáze – pozažmo jeho zveřejnění. Na naše „anglické“ doméně byl do fóra nasazen PunBB – jak je známo jedná se o jednoduchý a rychlý redakční systém pro diskuzní fóra. Poslední verze ale neobsahuje žádnou ochranu proti spamu. Oplatí se pracně lokalizovaný a nastylovaný PHP kód vyměnit za robusnější phpBB, s ochranou CAPTCHA? Existuje jednoduché řešení. To spočíva v úprave PHP kódu v souboru post.php. Zde je část zdrojového kód (řádek 168..)

// Clean up message from POST
$message = pun_linebreaks(trim($_POST[‚req_message‘]));

if ($message == “)
$errors[] = $lang_post[‚No message‘];
else if (strlen($message) > PUN_MAX_POSTSIZE)
$errors[] = $lang_post[‚Too long message‘];
else if ($pun_config[‚p_message_all_caps‘] == ‚0‘ && strtoupper($message) == $message && !$pun_page[‚is_admmod‘])
$message = ucwords(strtolower($message));

// Validate BBCode syntax …CUT…

zde je upravený kód

// Clean up message from POST
$message = pun_linebreaks(trim($_POST[‚req_message‘]));

if ($message == “)
$errors[] = $lang_post[‚No message‘];
else if (strlen($message) > PUN_MAX_POSTSIZE)
$errors[] = $lang_post[‚Too long message‘];
else if ($pun_config[‚p_message_all_caps‘] == ‚0‘ && strtoupper($message) == $message && !$pun_page[‚is_admmod‘])
$message = ucwords(strtolower($message));

$words = array(
„http“,
„virus“,
„href“,
„видео“,
„поxxо“,
„poxx“,
„ring“,
„sxx“,
„axxl „,
„vxxra“,
„pixxs“,
„puxxy“ );
foreach($words as $word)
{
if(stristr($message, $word))
$errors[] = $lang_post[‚Forbidden words in post. Access denied‘];
}
// Validate BBCode syntax …CUT…

Další možnost je použití black listu, pak stačí pouze

$words = file(‚./blacklist‘);
foreach($words as $word)
{
if(stristr($message,rtrim($word))) $errors[] = $lang_post[‚Forbidden words in post. Access denied‘];
}

+ umístění souboru blacklist do složky. Po úpravě PHP kódu klesl počet spamů z 10 denně na 0. V příkladu písmeno x nahrazuje kritické části filtrované fráze.

V /lang/En/post.php stačí nadefinovat hlášku pro Forbidden words in post. Access denied. Výsledek při pokusu o odeslání příspěvku se závadným obsahem pak může vypadat třeba takhle..

spam killer

Za konzultace díky b0 a starenka.

Diskuze AMP Security Fórum

Odkaz vede do sekce Diskuze článků a tutoriálů – komentáře směrujte do příslušné sekce.

Kam dál?