001 package hirondelle.web4j.security; 002 003 import hirondelle.web4j.request.RequestParser; 004 005 /** 006 Determine if text is likely spam. 007 008 <P>See {@link hirondelle.web4j.BuildImpl} for important information on how this item is configured. 009 {@link hirondelle.web4j.BuildImpl#forSpamDetector()} 010 returns the configured implementation of this interface. 011 012 <P><a href="http://en.wikipedia.org/wiki/Forum_spam">Spam</a> refers to unwanted input from 013 undesirable parties (usually advertising of some sort) that is often POSTed to servers using automated means. 014 015 <P>Most spam contains <em>links</em>. Implementations are encouraged to detect unwanted links. 016 017 <P>The <tt>SpamDetectionInFirewall</tt> setting in <tt>web.xml</tt> can instruct the 018 {@link hirondelle.web4j.security.ApplicationFirewall} to use the configured <tt>SpamDetector</tt> 019 to reject <em>all</em> requests containing at least one parameter that appears to be spam. 020 Such filtering is applied as a 021 <a href="ApplicationFirewall.html#HardValidation">hard validation</a>, and will <em>not</em> result in 022 a polished response to the end user. 023 024 <P>If that policy is felt to be too aggressive, then the only alternative is to check <em>all 025 items input as text</em> using {@link hirondelle.web4j.model.Check#forSpam()} (usually 026 in a Model Object constructor). Such checks do <em>not</em> need to be applied to 027 numeric or date data, since the regular conversion validations done by {@link RequestParser} for 028 numbers and dates will already detect and reject any spam. 029 */ 030 public interface SpamDetector { 031 032 /** 033 Determine if the given text is very likely spam. 034 035 @param aText value of a request parameter. 036 */ 037 boolean isSpam(String aText); 038 039 }