Wielu użytkowników starszych wersji Joomla! CMS atakowana jest całą masą spamerskich wiadomości. Niestety przyczynia się do tego wbudowany formularz kontaktowy.
Jedną z metod ochrony przed spamem jest instalacja dodatku korzystającego z technologii CAPTCHA (przed wysłaniem wiadomości użytkownik jest zmuszony wpisać kod odczytany z obrazka).
Jednak moim zdaniem takie rozwiązanie w komercyjnym serwisie wygląda nieprofesjonalnie.
Innym znacznie ciekawszym rozwiązaniem jest drobna ingerencja w kod pliku contact.php znajdującego się w katalogu components/com_contact/
Dokładnie pod linią zawierającą wpis
$prefix = sprintf( _ENQUIRY_TEXT, $mosConfig_live_site );
wystarczy dodać następujący kod:
// Prevent form submission if one of the banned words is found in the submitted E-mail body
$badWords = array ( "worldbreak.com", "holdem", "texas holdem", "naghmez", "betting", "acne", "proactiv", "air.info", "vanguard",
"tickets", "hotels", "florida", "wagering", "online wagering", "yandex.com", "poker", "p0ker", "viagra", "cialis", "levitra",
"soma", "lipitor", "zoloft", "xanax", "phentermine", "diazepam", "tramadol", "valium", "acroduke" ,
"viagra", "porno", "car-insurance" , "nice page" ,"good site", "cialis", "pornn", "teen" , "sex", "ringtones",
"levitra", "healthinsurance", "health-insurance", "phentermine", "phentermin", "teens", "p0rrn", "black jack", "cassino", "casino", "caSino",
"[url=http://", "v9agra", "replica watch", "replica-watch", "replica", "mortgage refinance", "mortgage" , "clicktotest" ,
"kanikuli" , "abdominoplasty", "cubebase" , "zovirax", "mnogo" , "hotbox" , "seks" , "online games" , "fucck", "fuck",
"fu*ckiing" , "orrgies" , "smotravel" , "zocor" , "Ford", "[url=", "lexus", "hochumaluu"
); // <--- add more "forbidden" words here foreach ($badWords as $value) {
if ( stristr($text, $value) ) {
header("HTTP/1.0 403 Forbidden");
die("Forbidden - You are not authorized to view this page");
}
}
// Prevent form submission if one of the banned words is found in the submitted E-mail-address $badWords = array ( "worldbreak.com", "holdem", "texas holdem", "naghmez", "betting", "acne", "proactiv", "air.info", "vanguard",
"tickets", "hotels", "florida", "wagering", "online wagering", "yandex.com", "poker", "p0ker", "viagra", "cialis", "levitra",
"soma", "lipitor", "zoloft", "xanax", "phentermine", "diazepam", "tramadol", "valium", "acroduke",
"mnogo" , "hotbox" , ".ru" , "hob.com", "usa.net", "outweb.com", "asz.com", "nkommunikation.com"
); // <--- add more "forbidden" words here foreach ($badWords as $value) {
if ( stristr($email, $value) ) {
header("HTTP/1.0 403 Forbidden");
die("Forbidden - You are not authorized to view this page");
}
}
Oczywiście obie tablice $badWords można dowolnie modyfikować dodając kolejne słowa i frazy.
Użytkownicy Joomla! 1.011 są w lepszej sytuacji, gdyż opisywany mechanizm jest już wbudowany w komponent kontakt.
Wystarczy wyedytować element menu odpowiedzialny za wyświetlanie strony z formularzem kontaktowym. W opcjach po prawej stronie można znaleźć trzy parametry używane przez mechanizm filtrujący.
Wystarczy wpisać w te pola słowa zabronione. Proszę pamiętać aby były one oddzielone znakiem średnika. Można również całkowicie zrezygnować z wbudowanego formularza i skorzystać z modułu formularza kontaktowego naszego autorstwa
Antispam Contact Form (9.31 KB). Dokładnieszy opis modułu znajdziesz » tutaj