Create your own spam filter extensions
My last post about comment spam fighting resulted in a lot of e-mails from readers asking how to create their own spam fighting logic in BlogEngine.NET 1.3. So I decided to show a simple extension that listens for certain bad words and filters on those. If a comment contains one of the predefined words it is considered spam.
The extension
[Extension("Filters comments containing bad words", "1.0", "Mads Kristensen")]
public class BadWordFilter
{
// Constructor
public BadWordFilter()
{
// Add the event handler for the CommentAdded event
Post.AddingComment += new EventHandler<CancelEventArgs>(Post_AddingComment);
}
// The collection of bad words
private static readonly StringCollection BAD_WORDS = AddBadWords();
// Add bad words to the collection
private static StringCollection AddBadWords()
{
StringCollection col = new StringCollection();
col.Add("VIAGRA");
col.Add("CASINO");
col.Add("MORTAGE");
return col;
}
// Handle the AddingComment event
private void Post_AddingComment(object sender, CancelEventArgs e)
{
Comment comment = (Comment)sender;
string body = comment.Content.ToUpperInvariant();
// Search for bad words in the comment body
foreach (string word in BAD_WORDS)
{
if (body.Contains(word))
{
// Cancel the comment and raise the SpamAttack event
e.Cancel = true;
Comment.OnSpamAttack();
break;
}
}
}
}
The problem with an extension that filters based on bad words is that if you have a blog about medicine then Viagra probably isn’t a bad word. Therefore this type of spam fighting is left out of the release, but is offered as a separate download where you are able to define your own bad words.
Comments
Comments are closed