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();





    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;








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.

Download (743 bytes)


Comments are closed