Version: 1.1.0.2, by y2ksw
Developer Last Online: Feb 2023
Version: 3.5.4
Rating:
Released: 06-25-2006
Last Update: 01-02-2007
Installs: 22
Uses Plugins
No support by the author.
This little product/plugin disallows automatic sending of spam through the Contact Us page.
Notes to version 1.1.0.0
Due to an almost personal battle against some spammers - intended as: high spam update rate, specially in the weekends when both me and spammers have nothing to do - I added an option to check the allowed number of hyperlinks in the message body, which makes this spam filter a little more intelligent.
The default number of allowed links is set to 12, which appears to be the lower limit from the latest research.
For customizing the message and the number of allowed hyperlinks, an option interface was added, which appears right below the vBulletin Options list - Site Name / URL / Contact Details, as 'Contact Us' Spam Filter Settings.
Version History
1.1.0.2 Additional recognition strings (repetitive 'http://')
1.1.0.1 FIX: Hyperlinks count bug.
1.1.0.0 Additional recognition strings; check of allowed number of hyperlinks in the message body; options interface
Ok, by reading the XML i found out that if someone goes directly to the sendmessage.php without coming from any of the forums page, the Contact form is not displayed.
If the referring page is not the one you specified in the CP options, normally http://www.domain.tld/sendmessage.php, an automated script with the POST / GET commands will receive an essentially blank page, and the mail is not sent.
This is useful only to sites, like mine, where image verification is not appliable.
PHP Code:
$MyMessageURL = $vbulletin->options['bburl'] . '/' . $vbulletin->options['contactuslink'];
if($_SERVER['HTTP_REFERER'] != $MyMessageURL)
{
die('Spam filter: Please send your message through the appropriate message form.');
}
Sooner or later the spam bots will be updated to send also the referrer header, but until then this one works pretty well ...
When this will happen, an additional test may be to add a host IP comparison.
// Loop through each POST item and check for the headers
foreach($_POST as $MyKey => $MyPostItem)
{
$MyTempItem = strtolower($MyPostItem);
foreach($MyHeaders as $MyHeader)
{
if(strpos($MyTempItem, strtolower($MyHeader)) !== FALSE)
{
die($MyDieMessage);
}
}
}
// Check for '9c53d2119880d95e96e1a71e3a6c8340' in the message body.
// This string is found in automated browsers (all yet) at the bottom.
// For completeness we parse all post variables for this string.
// Prepared for more recognition strings.
$MyStrings = array(
'9c53d2119880d95e96e1a71e3a6c8340',
'dc64615b0a1e1bd3cb2689bf82248b5c' // 2006-06-27
);
// Loop through each POST item and check for the headers
foreach($_POST as $MyKey => $MyPostItem)
{
$MyTempItem = strtolower($MyPostItem);
foreach($MyStrings as $MyString)
{
if(strpos($MyTempItem, strtolower($MyString)) !== FALSE)
{
die($MyDieMessage);
}
}
}
good really OK splendid compliments is then I have read you from some part I do not remember where to here on the Sergio & Danny Ciaooooooooo Vbulletin.it by