<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>aip Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=Home</link><description>aip Wiki Rss Description</description><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=Home&amp;version=32</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="#Overview"&gt;Overview&lt;/a&gt; | &lt;a href="#Examples"&gt;Examples&lt;/a&gt; | &lt;a href="#Features"&gt;Features&lt;/a&gt; | &lt;a href="#require"&gt;Requirements&lt;/a&gt; | &lt;a href="#project"&gt;Project&lt;/a&gt; | &lt;a href="#usage"&gt;Usage&lt;/a&gt; | &lt;a href="#appearance"&gt;Appearance&lt;/a&gt; | &lt;a href="#config"&gt;Configuration&lt;/a&gt; | &lt;a href="#spam"&gt;About Spam&lt;/a&gt; | &lt;a href="#resources"&gt;External Resources&lt;/a&gt; | &lt;a href="#help"&gt;Help and Feedback&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=Wikimap&amp;amp;referringTitle=Home"&gt;&amp;lt;Wikimap&amp;gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RTW1&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 1.0 RTW&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 2.0 Beta&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Auto-Input Protection is a highly extensible ASP.NET web control that provides CAPTCHA protection for your blogs, forums, wikis and websites, greatly reducing the likelihood of unwanted form submission from automated spam and hacks.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Started:&lt;/b&gt; Minimal Configuration &lt;i&gt;(NO AUDIO)&lt;/i&gt;&lt;br /&gt;&lt;div class="video" style="text-align:left"&gt;
&lt;span class="player"&gt;&lt;object type="application/x-mplayer2" height="285" width="320" classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"&gt;
&lt;param name="fileName" value="http://davesexton.com/Videos/AIP/AIP-GettingStarted.wmv"&gt;

&lt;/param&gt;&lt;embed type="application/x-mplayer2" height="285" width="320" src="http://davesexton.com/Videos/AIP/AIP-GettingStarted.wmv" pluginspage="http://www.microsoft.com/windows/windowsmedia/download/default.asp" autoplay="false" autostart="false" /&gt;
&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="external"&gt;&lt;a href="http://davesexton.com/Videos/AIP/AIP-GettingStarted.wmv" target="_blank"&gt;Launch in another window&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;
&lt;a name="Overview"&gt;&lt;/a&gt;Overview
&lt;/h3&gt;You can easily add the AIP web control to existing ASP.NET 2.0 and 3.5 websites and use it with minimal configuration.  Check out the video for an example.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP 2.0 Beta works with Visual Studio 2005, 2008, and Visual Web Developer Express&lt;/b&gt;.  The AIP web control provides design-time support in Visual Studio 2005 and 2008.  The installer automatically adds the control to the toolbox and merges the AIP documentation into Visual Studio's help.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP works with minimal configuration&lt;/b&gt;.  Only an HTTP request handler must be added to your web.config file and you'll be able to use the control on all of your web pages that require protection.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP uses a custom validator's server-side event to test user input&lt;/b&gt; so that if user validation fails, &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP is fully extensible&lt;/b&gt;.  You can define a custom layout template for the control and configure built-in text, image and filter providers to produce random CAPTCHAs in various formats.  You can also create custom providers that generate randomized text, images and filters.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Examples"&gt;&lt;/a&gt;Examples
&lt;/h3&gt;The following example uses the AIP web control with its default template and the default text and image providers (basic English and line noise, respectively).&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=11028" alt="Example-Default.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The next example uses a custom data-bound template and various built-in providers.&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=8979" alt="Example-Blog.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The final example illustrates a random CAPTCHA that has been generated using built-in text and filter providers, and a custom image provider.  (Note that a randomized cross hatch filter provider is now built-in as of 2.0 Beta.)&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9479" alt="Example-CrossHatch2.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Features"&gt;&lt;/a&gt;Features
&lt;/h3&gt;The AIP Web Control&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;works out-of-the-box with minimal configuration; only the Http Handler must be configured.&lt;/li&gt;&lt;li&gt;2.0 Beta can be configured to use the ASP.NET cache or session state (useful for web farms).  The web control also works with view state disabled.&lt;/li&gt;&lt;li&gt;can be used on web form and user control designers in Visual Studio.&lt;/li&gt;&lt;li&gt;can be edited in template-mode with two placeholder controls; one that provides the location of the CAPTCHA image and another provides the validation textbox.  Literal content and server controls are supported in the template for complete control over its appearance.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; 2.0 Beta no longer requires placeholder controls in custom templates.  Instead, you must add an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;uses ASP.NET validation controls.  Check &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; upon post-back to determine whether validation succeeded.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;You can specify custom error messages for a validation summary.  2.0 Beta also provides properties to set in-line error messages.&lt;/li&gt;&lt;li&gt;The control in 2.0 Beta exposes a &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; property that will automatically set the &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; properties of the validator controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;The CAPTCHA text&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;can be generated with a custom algorithm.&lt;/li&gt;&lt;li&gt;can be random, basic English words from the Ogden dictionary, which is built-in to the AIP library.&lt;/li&gt;&lt;li&gt;can be characters chosen at random from a configurable character set that includes any combination of upper-case and lower-case letters, the number zero, positive digits and pre-defined symbols.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;The default list of characters that are excluded can be modified.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;can be case-sensitive for validation.&lt;/li&gt;&lt;li&gt;has a random length that is configurable with maximum and minimum values.&lt;/li&gt;&lt;li&gt;has a customizable appearance, providing control over the list of sampled colors and fonts, the size range of characters, and provider-specific attributes that are all configured in the web.config file.&lt;/li&gt;
&lt;/ul&gt;The AIP library&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;produces random output that can easily be configured to vary greatly in appearance between sites.&lt;/li&gt;&lt;li&gt;is extensible, using custom ASP.NET 2.0 providers to generate the CAPTCHA text and image, and to apply graphical filters.&lt;/li&gt;&lt;li&gt;has a text provider that chooses words from the Ogden dictionary.&lt;/li&gt;&lt;li&gt;has a text provider that chooses random characters.&lt;/li&gt;&lt;li&gt;has a base bitmap provider that creates a bitmap with text rendered in evenly spaced vertical partitions.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders line-noise with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders 1 of 5 random background images with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a filter provider that can render randomized translucent bars, vertically or horizontally, as an overlay.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
&lt;a name="require"&gt;&lt;/a&gt;Requirements
&lt;/h3&gt;AIP only requires ASP.NET 2.0.&lt;br /&gt; &lt;br /&gt;Install the Microsoft .NET Framework 2.0, 3.0 or 3.5 to use AIP in your web sites.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="project"&gt;&lt;/a&gt;Project
&lt;/h3&gt;The AIP project was written, and will continue to be written, exclusively in C#.&lt;br /&gt; &lt;br /&gt;AIP 2.0 Beta was built with C# 3.0 and Visual Studio 2008, but the compiled assembly targets the Microsoft .NET Framework 2.0.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Plans&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Globalization&lt;/li&gt;&lt;li&gt;Community participation in the development of new image filters for CAPTCHA algorithms&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Team&lt;/b&gt;&lt;br /&gt;If you'd like to become a team member, please contact &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  As indicated above, anyone that can implement image filters in C# for different/better CAPTCHA algorithms would make a great addition to the team.  Please mention some of your qualifications and your motivation for becoming a team member in your email.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="usage"&gt;&lt;/a&gt;Usage
&lt;/h3&gt;Add the AIP web control to your web forms and an image containing random text will be generated automatically, unique to each request.  Users must enter the text that they see into a textbox before submitting the form.  If a user enters invalid text then &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false on post-back.  You can use &lt;span class="codeInline"&gt;ValidationSummary&lt;/span&gt; controls to display errors or set in-line error message properties on the AIP web control.&lt;br /&gt; &lt;br /&gt;For more information please refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="appearance"&gt;&lt;/a&gt;Appearance
&lt;/h3&gt;The appearance of the AIP web control may be customized in a designer, declaratively in the HTML page or programmatically in code-behind (or code-beside).&lt;br /&gt; &lt;br /&gt;&lt;b&gt;2.0 Beta&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output.  All that is required is an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;1.0 RTW&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output using an AIP image placeholder control and an AIP textbox placeholder control, which are used to indicate where the image and textbox controls should be placed, respectively, within your custom HTML template.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="config"&gt;&lt;/a&gt;Configuration
&lt;/h3&gt;AIP is configured in your website's web.config file using ASP.NET 2.0 providers.  One provider generates the text, one renders the image and any number of filter providers may be configured to help randomize the output.  AIP has a basic English text provider and a line-noise bitmap provider configured by default, which makes the web control usable out-of-the-box.  You can create your own text, image and filter provider implementations if you have your own CAPTCHA algorithms that you'd like to use, or just configure the existing filters to customize the default output.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 1&lt;/b&gt;&lt;br /&gt;This example illustrates the minimum required configuration to use the AIP web control.  Add the &lt;span class="codeInline"&gt;httpHandlers&lt;/span&gt; registration to your &lt;i&gt;web.config&lt;/i&gt; file exactly as it appears here: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;AIP.ashx&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;b&gt;Note:&lt;/b&gt; An &lt;b&gt;AIP.ashx&lt;/b&gt; file &lt;i&gt;does not exist&lt;/i&gt;.  ASP.NET routes requests to the AIP request handler automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 2&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Note that this example only applies to AIP 1.0.  Refer to the 2.0 Beta documentation for 2.0 examples.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Here is an example configuration section for AIP that uses a text provider to generate random characters, the resource-based bitmap provider, the translucent bar overlay filter provider, and also adds a custom filter provider named, &lt;i&gt;crosshatch&lt;/i&gt;: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;sectionGroup name=&amp;quot;dsweb&amp;quot;&amp;gt;
      &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/sectionGroup&amp;gt;
  &amp;lt;/configSections&amp;gt;
  &amp;lt;dsweb&amp;gt;
    &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;randomtext&amp;quot; defaultBitmapProvider=&amp;quot;resource&amp;quot;&amp;gt;
      &amp;lt;textProviders&amp;gt;
        &amp;lt;add name=&amp;quot;randomtext&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot;
             minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
      &amp;lt;/textProviders&amp;gt;
      &amp;lt;bitmapProviders&amp;gt;
        &amp;lt;add name=&amp;quot;resource&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionBitmapProvider, DaveSexton.AutoInputProtection&amp;quot;
             minimumCharacterRotationDegrees=&amp;quot;-15&amp;quot; maximumCharacterRotationDegrees=&amp;quot;15&amp;quot; /&amp;gt;
      &amp;lt;/bitmapProviders&amp;gt;
      &amp;lt;filters&amp;gt;
        &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
        &amp;lt;add name=&amp;quot;crosshatch&amp;quot;
             type=&amp;quot;CrossHatchAutoInputProtectionFilterProvider&amp;quot; /&amp;gt;
      &amp;lt;/filters&amp;gt;
    &amp;lt;/autoInputProtection&amp;gt;
  &amp;lt;/dsweb&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add path=&amp;quot;AIP.ashx&amp;quot; verb=&amp;quot;GET&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9478" alt="Example-CrossHatch1.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9480" alt="Example-CrossHatch3.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9481" alt="Example-CrossHatch4.jpg" /&gt;&lt;br /&gt;&lt;b&gt;Figure 1: Rendered Examples&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;For information on the &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; class, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; is built-in to the AIP library.  The new implementation also provides randomization and extra options.&lt;br /&gt; &lt;br /&gt;For information about the &lt;span class="codeInline"&gt;dsweb&lt;/span&gt; configuration section, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#configure"&gt;How Do I configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, the &lt;span class="codeInline"&gt;&amp;lt;dsweb&amp;gt;&lt;/span&gt; section group is no longer used.  Instead, the &lt;span class="codeInline"&gt;&amp;lt;autoInputProtection/&amp;gt;&lt;/span&gt; section is used by itself.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="spam"&gt;&lt;/a&gt;About Spam
&lt;/h3&gt;Spam is a problem.  Not only is it annoying but it's also immoral, and sometimes illegal.  Spammers attempt to make money at your expense or decrease the value of the services that your website provides.  The latter case is not usually classified as spam, however, but is actually some form of hacking instead; AIP will help you to protect your web forms against both types of automated attacks, regardless of the attacker's intention.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Link Attack&lt;/b&gt;&lt;br /&gt;A spammer will look for unprotected blogs, forums and wikis that allow links to be posted.  The spammer will do what it takes to get their links visible on your web pages.  When a link to a spammer's site appears in your website, and your site is indexed by some search engine such as Google, the mere presence of the spammer's link may increase the score of the their website in the search engine.  A higher score increases the chances that their site will appear closer to the top in search results.  Higher score/rank can mean increased sales and profit from embedded ads in the spammer's site simply because they are increasing their site's visibility on the net.  You suffer, your blog/forum/wiki/website users suffer and Joe Spammer makes some loot.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Automated Attack&lt;/b&gt;&lt;br /&gt;Spammers, just like legitimate businesses with morals, find ways to automate processes using computers.  One such way is automated blog spamming, for example.  A computer program searches the more well-known blog sites, and personal blogs that use commercial software, to find anonymous comment forms where they can post their site's links, automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Protection from Automated Spammers&lt;/b&gt;&lt;br /&gt;There are ways that you can protect your sites and blogs from these types of spam attacks.  CAPTCHA is only one of those ways, and it isn't always the most appropriate either.  One problem with CAPTCHA, for example, is that it's not accessibility-friendly.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;How does an image with text help?&lt;/b&gt;&lt;br /&gt;CAPTCHA renders text in an image because computers have a much harder time parsing image-based text than people do.  A user can &lt;i&gt;easily&lt;/i&gt; duplicate the text that they see while computers cannot.  This allows websites to distinguish between legitimate users and automated spamming software.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;A Spammers Response to CAPTCHA&lt;/b&gt;&lt;br /&gt;One line-of-attack that automated spammers use against CAPTCHA is optical character recognition (OCR).  OCR is software that can read text from an image.  Examples of OCR can be found in programs such as Adobe Acrobat and Microsoft Office OneNote, which allows you to search for text in embedded images.&lt;br /&gt; &lt;br /&gt;You can defend against spammer's OCR by making it harder for computers to distinguish between the outline of characters and the image's background, or clutter-content; as long as a human can &lt;i&gt;easily&lt;/i&gt; distinguish between the validation text and the rest of the image, you have yourself a CAPTCHA solution.&lt;br /&gt; &lt;br /&gt;Examples of CAPTCHA can be found on many websites that provide public web forms for site membership or simple data entry, such as right here on CodePlex when you register a new project!&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="resources"&gt;&lt;/a&gt;External Resources
&lt;/h3&gt;Here is a list of resources that you can use to start researching about spam and methods for protection like CAPTCHA.&lt;br /&gt; &lt;br /&gt;Spam in blogs. (2007, March 13). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;CAPTCHA. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Optical character recognition. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 11:28, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="help"&gt;&lt;/a&gt;Help and Feedback
&lt;/h3&gt;AIP 2.0 Beta provides a standalone compiled help file and the installer integrates documentation into Visual Studio 2005 and 2008 automatically.  Refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes&lt;/a&gt; for more information.&lt;br /&gt; &lt;br /&gt;For help performing some of the more common tasks associated with AIP, see the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;For information about AIP text, bitmap and filter providers, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=Home"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;For questions and concerns that aren't addressed by the wikis you may use the &lt;b&gt;Discussions&lt;/b&gt; area and bugs may be reported in the &lt;b&gt;Issue Tracker&lt;/b&gt;.  If you prefer to submit your questions or comments to the team then please contact, &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;; however, if you are asking a question then please check the wikis and &lt;b&gt;Discussions&lt;/b&gt; for answers first!&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Fri, 04 Apr 2008 16:14:08 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080404041408P</guid></item><item><title>UPDATED WIKI: LatestReleaseNotes</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Latest Release Notes for Auto-Input Protection (AIP)
&lt;/h2&gt;Please read this document carefully before installing AIP.&lt;br /&gt;&lt;h5&gt;
Version: 2.0 Beta
&lt;/h5&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#Installation"&gt;Installation Instructions&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#InstallDelay"&gt;Delayed Installation Warning&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#Issues"&gt;Visual Studio 2005 Control Registration Issues&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href="#Docs"&gt;Auto-Input Protection Help&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#MSHelp1"&gt;Standalone Compiled Help (.chm)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#MSHelp2"&gt;Integrated Help in Visual Studio&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#MSHelp2Manual"&gt;How to manually add the AIP help to Visual Studio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href="#Source"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#HowToSourceCode2005"&gt;How to open the solution in Visual Studio 2005&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;h3&gt;
&lt;a name="Installation"&gt;&lt;/a&gt;Installation Instructions
&lt;/h3&gt;The AIP installer will install the AIP library, ready-to-use, and the complete source code, which consists of a Visual Studio 2008 solution and projects, including all required content and code files.&lt;br /&gt; &lt;br /&gt;To install Auto-Input Protection (AIP):&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Download the installer.&lt;/li&gt;&lt;li&gt;Close all running instances of Visual Studio 2005 and 2008 on your computer.&lt;/li&gt;&lt;li&gt;Run the installer.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Important:&lt;/b&gt; The installer must run with administrative privileges.  (Vista users see below for specific instructions).&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;If the installer detects that you have Visual Studio 2005 Standard+ or 2008 Standard+ installed then it will offer to have the AIP web control installed in each so that it appears in the toolbox automatically.  To have the installer add the AIP web control to the Visual Studio 2005 or 2008 toolbox, check the box next to each on the &lt;i&gt;Control Registration&lt;/i&gt; step.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;Automated control registration does not work for Visual Studio Express Editions.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Important:&lt;/b&gt; See &lt;a href="#Issues"&gt;Visual Studio 2005 Control Registration Issues&lt;/a&gt; below for information about a bug before installing AIP.  (This issue does not seem to effect Visual Studio 2008.)&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;If you've opted to have the installer add the AIP web control to a toolbox automatically, then the next wizard steps will ask you to enter the location of the Visual Studio custom controls folder, once for each version of Visual Studio.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;The default path (&lt;i&gt;My Documents\Visual Studio YYYY\Controls&lt;/i&gt;) will be fine in most cases, unless you've configured Visual Studio to use a different folder.&lt;/li&gt;&lt;li&gt;The path that is specified in the wizard is the root controls folder.  Don't specify a folder for a custom tab because one will automatically be created by the installer: &lt;i&gt;DaveSexton.Web.Controls&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;If the folder does not exist it will be created by the installer.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;Complete the wizard to begin installation.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;See &lt;a href="#InstallDelay"&gt;Delayed Installation Warning&lt;/a&gt; below for information about a long delay that may occur during setup.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;&lt;b&gt;Note:&lt;/b&gt; Visual Studio (both 2005 and 2008) may briefly open and close during the installation, or uninstallation.  This behavior is to be expected if you've used the control registration feature of the installer.  After the temporary instances have closed, and the installer has completed, you may open another instance of Visual Studio for use.  This behavior occurs as a result of the AIP Installer running the &lt;span class="codeInline"&gt;Tools.InstallCommunityControls&lt;/span&gt; command to install the AIP web controls into the Visual Studio toolbox.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Instructions for Vista Users&lt;/b&gt;&lt;br /&gt;With UAC enabled, follow these steps to start the installation instead of double-clicking the installer file: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Locate &lt;b&gt;Start&lt;/b&gt; &amp;gt; &lt;b&gt;All Programs&lt;/b&gt; &amp;gt; &lt;b&gt;Accessories&lt;/b&gt; &amp;gt; &lt;b&gt;Command Prompt&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Right-mouse click and select &lt;b&gt;Run as administrator&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Change the current directory to the location of the AIP Installer file.  For example, enter the following: &lt;span class="codeInline"&gt;cd c:\users\dave\desktop&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Run the installer from the command prompt: &lt;span class="codeInline"&gt;msiexec /i name-of-installer.msi&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="InstallDelay"&gt;&lt;/a&gt;Delayed Installation Warning
&lt;/h4&gt;It is normal to experience a long delay during installation.  The installer is merging AIP's documentation with Visual Studio's documentation, which can take quite a while.  Please be patient.&lt;br /&gt; &lt;br /&gt;The same goes for uninstallation.&lt;br /&gt; &lt;br /&gt;See &lt;a href="#MSHelp2"&gt;Integrated Help in Visual Studio&lt;/a&gt; below for more information.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="Issues"&gt;&lt;/a&gt;Visual Studio 2005 Control Registration Issues
&lt;/h4&gt;The installer provides the option to have the AIP web control added to your Visual Studio 2005 toolbox; however, there are some known issues with the Visual Studio command used by the AIP installer that may prevent the control from being installed.  Regardless, the library itself will be installed on your system so you can manually include the controls in your toolbox if you want.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Problem 1&lt;/b&gt;&lt;br /&gt;If you have installed Sql Server 2005 (any version including CTPs) after installing Visual Studio 2005 then you may have to perform some manual patching before using this installer, but only if you plan on having it install the AIP web control into Visual Studio 2005 for you.&lt;br /&gt; &lt;br /&gt;Follow these instructions before running the AIP installer: &lt;br /&gt; &lt;br /&gt;Failure to install Toolbox controls via ContentInstaller or Tools.InstallCommunityControls&lt;br /&gt;&lt;a href="http://blogs.msdn.com/chetanc/archive/2005/11/16/493495.aspx" class="externalLink"&gt;http://blogs.msdn.com/chetanc/archive/2005/11/16/493495.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Problem 2&lt;/b&gt;&lt;br /&gt;If you still receive an error after making the appropriate registry changes and executing &lt;span class="codeInline"&gt; devenv /setup &lt;/span&gt;, or if you haven't installed Sql Server 2005 but you are getting an error anyway such as a Package Load Failure, then you may have to make a different registry modification.&lt;br /&gt; &lt;br /&gt;You can try to delete invalid values under the following registry key and attempt the installation again: &lt;br /&gt; &lt;br /&gt;&lt;span class="codeInline"&gt; HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\UserToolBoxControls &lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Each value in the key above corresponds to a custom toolbox tab in Visual Studio.  Visual Studio seems to require that the list only contain tabs that correspond to existing folders in the &lt;span class="codeInline"&gt; My Documents\Visual Studio 2005\Controls &lt;/span&gt; directory.  Values that do not correspond to an existing folder must be removed.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;More Information&lt;/b&gt;&lt;br /&gt;The solutions above were discovered in the following thread and were tested on Windows Vista Business Edition for reliability, but please be aware that your own system configurations may affect whether these solutions are viable options for you: &lt;br /&gt; &lt;br /&gt;Error Executing VSI File with Toolbox Controls&lt;br /&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=133336&amp;amp;SiteID=1" class="externalLink"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=133336&amp;amp;SiteID=1&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Docs"&gt;&lt;/a&gt;Auto-Input Protection Help
&lt;/h3&gt;Preliminary documentation has been compiled for this release using &lt;a href="http://www.codeplex.com/DocProject" class="externalLink"&gt;DocProject&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.codeplex.com/Sandcastle" class="externalLink"&gt;Sandcastle&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are two different types of compiled help available, but both share the exact same content.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="MSHelp1"&gt;&lt;/a&gt;Standalone Compiled Help (.chm)
&lt;/h4&gt;This is an optional download that is separate from the AIP installer.  It is a compiled help file that can be opened on any Windows system by double-clicking it, with or without Visual Studio installed.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="MSHelp2"&gt;&lt;/a&gt;Integrated Help in Visual Studio
&lt;/h4&gt;The installer will merge AIP help into Visual Studio 2005 and 2008 automatically.&lt;br /&gt; &lt;br /&gt;To access AIP help while inside of Visual Studio you can open &lt;i&gt;Document Explorer&lt;/i&gt; by pressing the &lt;b&gt;F1&lt;/b&gt; key and &lt;b&gt;Auto-Input Protection&lt;/b&gt; will appear in the table of contents.&lt;br /&gt; &lt;br /&gt;&lt;h5&gt;
&lt;a name="MSHelp2Manual"&gt;&lt;/a&gt;How to manually add the AIP help to Visual Studio
&lt;/h5&gt;After installing AIP, if you don't see &lt;i&gt;Auto-Input Protection&lt;/i&gt; in Document Explorer's table of contents, then try selecting &lt;b&gt;(no filter)&lt;/b&gt;.  If it still doesn't appear then you have to merge AIP help yourself.&lt;br /&gt; &lt;br /&gt;You may have to follow these instructions multiple times, once for each version of Visual Studio in which you'd like to have AIP help.&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Right-mouse click one of the following &lt;b&gt;Help Collection Manager&lt;/b&gt; links and choose to open it in another browser window or tab.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href="ms-help://MS.VSCC.v80/dv_vscccommon/local/CollectionManager.htm" class="externalLink"&gt;Visual Studio 2005&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; | &lt;a href="ms-help://MS.VSExpressCC.v80/dv_vsexpcc/local/CollectionManagerExpress.htm" class="externalLink"&gt;Visual Studio 2005 Express Editions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; | &lt;a href="ms-help://MS.VSCC.v90/dv_vscccommon/local/CollectionManager.htm" class="externalLink"&gt;Visual Studio 2008 and 2008 Express Editions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Important:&lt;/b&gt; If nothing happens when you click a link, open Document Explorer or a new browser window yourself and then paste in the appropriate URI:&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;&lt;i&gt;ms-help://MS.VSCC.v80/dv_vscccommon/local/CollectionManager.htm&lt;/i&gt; for Visual Studio 2005 or &lt;/li&gt;&lt;li&gt;&lt;i&gt;ms-help://MS.VSExpressCC.v80/dv_vsexpcc/local/CollectionManagerExpress.htm&lt;/i&gt; for Visual Studio 2005 Express Editions or &lt;/li&gt;&lt;li&gt;&lt;i&gt;ms-help://MS.VSCC.v90/dv_vscccommon/local/CollectionManager.htm&lt;/i&gt; for Visual Studio 2008 and 2008 Express Editions.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;Make sure that you &lt;b&gt;Allow Blocked Content&lt;/b&gt; in your browser since an ActiveX Control is required that your browser may deem unsafe.  After allowing blocked content the page should function normally.&lt;/li&gt;&lt;li&gt;If you get a &lt;i&gt;Page cannot be displayed&lt;/i&gt; error after clicking one of the links above then you probably haven't installed the required version of Visual Studio.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;In the Help Collection Manager, locate &lt;b&gt;Auto-Input Protection&lt;/b&gt; in the list of help collections and check it.&lt;/li&gt;&lt;li&gt;Click the &lt;b&gt;Update VSCC&lt;/b&gt; button to apply your changes.&lt;/li&gt;&lt;li&gt;If a dialog appears read and follow its instructions carefully.  You may have to restart Visual Studio for the changes to take effect.&lt;/li&gt;&lt;li&gt;During the update the browser might not be responsive for a short period of time.  Please be patient.&lt;/li&gt;
&lt;/ol&gt;You should now see &lt;b&gt;Auto-Input Protection&lt;/b&gt; in the table of contents in Document Explorer for each of the versions of Visual Studio to which it was added.  If you do not, restarting the computer may help.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Source"&gt;&lt;/a&gt;Source Code
&lt;/h3&gt;Follow these steps to use the Visual Studio 2008 solution that is provided by the installer.  (For Visual Studio 2005 users, skip these steps and see below.)&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Browse to the AIP installation folder in &lt;i&gt;Windows Explorer&lt;/i&gt; (commonly, &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;).&lt;/li&gt;&lt;li&gt;Copy the entire contents of the &lt;b&gt;Source&lt;/b&gt; directory to another location; for instance, &lt;i&gt;My Documents\Visual Studio 2008\Projects\DaveSexton.AutoInputProtection\&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Double-click the &lt;b&gt;DaveSexton.AutoInputProtection.sln&lt;/b&gt; file to open the solution in Visual Studio.&lt;/li&gt;&lt;li&gt;If warned about missing source control information, click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;When prompted, select &lt;b&gt;Permanently remove source control association bindings&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;In &lt;i&gt;Solution Explorer&lt;/i&gt; delete the file named, &lt;b&gt;davesexton.pfx&lt;/b&gt; that appears in the &lt;i&gt;Properties&lt;/i&gt; folder of the &lt;b&gt;DaveSexton.AutoInputProtection&lt;/b&gt; project.  The file does not exist.&lt;/li&gt;&lt;li&gt;Open the Project Properties window for &lt;b&gt;DaveSexton.AutoInputProtection&lt;/b&gt; by double-clicking the &lt;b&gt;Properties&lt;/b&gt; folder in &lt;i&gt;Solution Explorer&lt;/i&gt; or right-mouse click the project node and select &lt;b&gt;Properties&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Select the &lt;b&gt;Signing&lt;/b&gt; tab.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;&amp;lt;New...&amp;gt;&lt;/b&gt; from the drop-down list to use your own signature.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;You may want to do the same for the &lt;b&gt;DaveSexton.AutoInputProtection.Install.Actions&lt;/b&gt; project if you're planning to rebuild the installer.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;Save all of your changes and try to build the &lt;b&gt;DaveSexton.AutoInputProtection&lt;/b&gt; project.  There should be no errors, warnings or messages in the &lt;b&gt;Error List&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="HowToSourceCode2005"&gt;&lt;/a&gt;How to open the solution in Visual Studio 2005
&lt;/h4&gt;The solution and all of its projects were developed in Visual Studio 2008.  To use them in Visual Studio 2005 you have to make some manual changes first.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Do not open the solution in Visual Studio yet.&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Browse to the AIP installation folder in &lt;i&gt;Windows Explorer&lt;/i&gt; (commonly, &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;).&lt;/li&gt;&lt;li&gt;Copy the entire contents of the &lt;b&gt;Source&lt;/b&gt; directory to another location; for instance, &lt;i&gt;My Documents\Visual Studio 2005\Projects\DaveSexton.AutoInputProtection\&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Open the &lt;i&gt;DavesSexton.AutoInputProtection.sln&lt;/i&gt; file in &lt;b&gt;notepad&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Change the &lt;b&gt;10&lt;/b&gt; in the first line to a &lt;b&gt;9&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Change the &lt;b&gt;VS2008&lt;/b&gt; in the second line to &lt;b&gt;VS2005&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Save the changes and close notepad.&lt;/li&gt;&lt;li&gt;Open the &lt;b&gt;AIP Tests&lt;/b&gt; web application project (&lt;i&gt;Testing\AIP\AIP Tests.csproj&lt;/i&gt;) in notepad.&lt;/li&gt;&lt;li&gt;Locate &lt;span class="codeInline"&gt;&amp;lt;ProductVersion&amp;gt;9.0.21022&amp;lt;/ProductVersion&amp;gt;&lt;/span&gt; in the first &lt;i&gt;PropertyGroup&lt;/i&gt; and change it to &lt;span class="codeInline"&gt;&amp;lt;ProductVersion&amp;gt;8.0.50727&amp;lt;/ProductVersion&amp;gt;&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Locate the first &lt;i&gt;ItemGroup&lt;/i&gt; and remove all &lt;i&gt;Reference&lt;/i&gt; elements that have &lt;span class="codeInline"&gt;&amp;lt;RequiredTargetFramework&amp;gt;3.5&amp;lt;/RequiredTargetFramework&amp;gt;&lt;/span&gt; as children.&lt;/li&gt;&lt;li&gt;Locate &lt;span class="codeInline"&gt;&amp;lt;Import Project=&amp;quot;$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets&amp;quot; /&amp;gt;&lt;/span&gt; near the bottom of the file and change the &lt;b&gt;v9.0&lt;/b&gt; to &lt;b&gt;v8.0&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Save the changes and close notepad.&lt;/li&gt;&lt;li&gt;Go back to the installation folder and double-click the solution file to open it in Visual Studio 2005.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; You may get warnings that there are unsupported project types.  None of these projects are critical, however they may be required to build the installer or test the control.  If the &lt;i&gt;AIP Tests&lt;/i&gt; web application project is not loaded then install VS 2005 Service Pack 1 (SP1) and try again.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; Do not attempt to build yet.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;When the solution opens, right-mouse click the &lt;b&gt;DaveSexton.AutoInputProtection&lt;/b&gt; project in Solution Explorer and select &lt;b&gt;Properties&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Go to the &lt;b&gt;Signing&lt;/b&gt; tab.&lt;/li&gt;&lt;li&gt;Under &lt;b&gt;Choose a strong name key file:&lt;/b&gt; select &lt;b&gt;&amp;lt;New...&amp;gt;&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Enter the name of a key file and press &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;You can uncheck &lt;i&gt;Protect my key file with a password&lt;/i&gt; or create a password.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;Expand the &lt;i&gt;DaveSexton.AutoInputProtection&lt;/i&gt; project node in Solution Explorer and then expand its &lt;b&gt;Properties&lt;/b&gt; folder.&lt;/li&gt;&lt;li&gt;Delete the &lt;b&gt;davesexton.pfx&lt;/b&gt; file since it does not exist.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; You can do the same for the &lt;b&gt;DaveSexton.AutoInputProtection.Install.Actions&lt;/b&gt; project if you'd like to rebuild the installer.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;Go to the &lt;b&gt;Build&lt;/b&gt; menu and select &lt;b&gt;Build Solution&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;The build &lt;i&gt;will&lt;/i&gt; fail and you &lt;i&gt;will&lt;/i&gt; get errors since AIP was written in C# 3.0, not C# 2.0.&lt;/li&gt;&lt;li&gt;Fix all of the errors and try building the solution again until it succeeds.&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; Since AIP targets the .NET Framework 2.0, the errors will most likely be syntactical, such as the use of object and collection initializers, extension methods, and shorthand property definitions, which are all not part of C# 2.0.  For this reason there will most likely be a large number of errors that apply to only a few particular cases.  Fixing one problem should fix many of the errors that are listed.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 19:54:29 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: LatestReleaseNotes 20080402075429P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=Home&amp;version=31</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="#Examples"&gt;Examples&lt;/a&gt; | &lt;a href="#Features"&gt;Features&lt;/a&gt; | &lt;a href="#require"&gt;Requirements&lt;/a&gt; | &lt;a href="#project"&gt;Project&lt;/a&gt; | &lt;a href="#usage"&gt;Usage&lt;/a&gt; | &lt;a href="#appearance"&gt;Appearance&lt;/a&gt; | &lt;a href="#config"&gt;Configuration&lt;/a&gt; | &lt;a href="#spam"&gt;About Spam&lt;/a&gt; | &lt;a href="#resources"&gt;External Resources&lt;/a&gt; | &lt;a href="#help"&gt;Help and Feedback&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=Wikimap&amp;amp;referringTitle=Home"&gt;&amp;lt;Wikimap&amp;gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RTW1&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 1.0 RTW&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 2.0 Beta&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;AIP is an extensible ASP.NET web control that provides CAPTCHA protection for your blogs, forums, wikis and websites, greatly reducing the likelihood of unwanted form submission from automated spam and hacks.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP 2.0 Beta works with Visual Studio 2005, 2008, and Visual Web Developer Express&lt;/b&gt;.  The AIP web control provides design-time support in Visual Studio 2005 and 2008.  The installer automatically adds the control to the toolbox and merges the AIP documentation into Visual Studio's help.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP works with minimal configuration&lt;/b&gt;.  Only an HTTP request handler must be added to your web.config file and you'll be able to use the control on all of your web pages that require protection.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP uses a custom validator's server-side event to test user input&lt;/b&gt; so that if user validation fails, &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP is fully extensible&lt;/b&gt;.  You can define a custom layout template for the control and configure built-in text, image and filter providers to produce random CAPTCHAs in various formats.  You can also create custom providers that generate randomized text, images and filters.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Examples"&gt;&lt;/a&gt;Examples
&lt;/h3&gt;The following example uses the AIP web control with its default template and the default text and image providers (basic English and line noise, respectively).&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=11028" alt="Example-Default.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The next example uses a custom data-bound template and various built-in providers.&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=8979" alt="Example-Blog.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The final example illustrates a random CAPTCHA that has been generated using built-in text and filter providers, and a custom image provider.  (Note that a randomized cross hatch filter provider is now built-in as of 2.0 Beta.)&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9479" alt="Example-CrossHatch2.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Features"&gt;&lt;/a&gt;Features
&lt;/h3&gt;The AIP Web Control&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;works out-of-the-box with minimal configuration; only the Http Handler must be configured.&lt;/li&gt;&lt;li&gt;2.0 Beta can be configured to use the ASP.NET cache or session state (useful for web farms).  The web control also works with view state disabled.&lt;/li&gt;&lt;li&gt;can be used on web form and user control designers in Visual Studio.&lt;/li&gt;&lt;li&gt;can be edited in template-mode with two placeholder controls; one that provides the location of the CAPTCHA image and another provides the validation textbox.  Literal content and server controls are supported in the template for complete control over its appearance.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; 2.0 Beta no longer requires placeholder controls in custom templates.  Instead, you must add an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;uses ASP.NET validation controls.  Check &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; upon post-back to determine whether validation succeeded.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;You can specify custom error messages for a validation summary.  2.0 Beta also provides properties to set in-line error messages.&lt;/li&gt;&lt;li&gt;The control in 2.0 Beta exposes a &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; property that will automatically set the &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; properties of the validator controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;The CAPTCHA text&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;can be generated with a custom algorithm.&lt;/li&gt;&lt;li&gt;can be random, basic English words from the Ogden dictionary, which is built-in to the AIP library.&lt;/li&gt;&lt;li&gt;can be characters chosen at random from a configurable character set that includes any combination of upper-case and lower-case letters, the number zero, positive digits and pre-defined symbols.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;The default list of characters that are excluded can be modified.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;can be case-sensitive for validation.&lt;/li&gt;&lt;li&gt;has a random length that is configurable with maximum and minimum values.&lt;/li&gt;&lt;li&gt;has a customizable appearance, providing control over the list of sampled colors and fonts, the size range of characters, and provider-specific attributes that are all configured in the web.config file.&lt;/li&gt;
&lt;/ul&gt;The AIP library&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;produces random output that can easily be configured to vary greatly in appearance between sites.&lt;/li&gt;&lt;li&gt;is extensible, using custom ASP.NET 2.0 providers to generate the CAPTCHA text and image, and to apply graphical filters.&lt;/li&gt;&lt;li&gt;has a text provider that chooses words from the Ogden dictionary.&lt;/li&gt;&lt;li&gt;has a text provider that chooses random characters.&lt;/li&gt;&lt;li&gt;has a base bitmap provider that creates a bitmap with text rendered in evenly spaced vertical partitions.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders line-noise with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders 1 of 5 random background images with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a filter provider that can render randomized translucent bars, vertically or horizontally, as an overlay.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
&lt;a name="require"&gt;&lt;/a&gt;Requirements
&lt;/h3&gt;AIP only requires ASP.NET 2.0.&lt;br /&gt; &lt;br /&gt;Install the Microsoft .NET Framework 2.0, 3.0 or 3.5 to use AIP in your web sites.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="project"&gt;&lt;/a&gt;Project
&lt;/h3&gt;The AIP project was written, and will continue to be written, exclusively in C#.&lt;br /&gt; &lt;br /&gt;AIP 2.0 Beta was built with C# 3.0 and Visual Studio 2008, but the compiled assembly targets the Microsoft .NET Framework 2.0.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Plans&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Globalization&lt;/li&gt;&lt;li&gt;Community participation in the development of new image filters for CAPTCHA algorithms&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Team&lt;/b&gt;&lt;br /&gt;If you'd like to become a team member, please contact &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  As indicated above, anyone that can implement image filters in C# for different/better CAPTCHA algorithms would make a great addition to the team.  Please mention some of your qualifications and your motivation for becoming a team member in your email.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="usage"&gt;&lt;/a&gt;Usage
&lt;/h3&gt;Add the AIP web control to your web forms and an image containing random text will be generated automatically, unique to each request.  Users must enter the text that they see into a textbox before submitting the form.  If a user enters invalid text then &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false on post-back.  You can use &lt;span class="codeInline"&gt;ValidationSummary&lt;/span&gt; controls to display errors or set in-line error message properties on the AIP web control.&lt;br /&gt; &lt;br /&gt;For more information please refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="appearance"&gt;&lt;/a&gt;Appearance
&lt;/h3&gt;The appearance of the AIP web control may be customized in a designer, declaratively in the HTML page or programmatically in code-behind (or code-beside).&lt;br /&gt; &lt;br /&gt;&lt;b&gt;2.0 Beta&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output.  All that is required is an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;1.0 RTW&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output using an AIP image placeholder control and an AIP textbox placeholder control, which are used to indicate where the image and textbox controls should be placed, respectively, within your custom HTML template.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="config"&gt;&lt;/a&gt;Configuration
&lt;/h3&gt;AIP is configured in your website's web.config file using ASP.NET 2.0 providers.  One provider generates the text, one renders the image and any number of filter providers may be configured to help randomize the output.  AIP has a basic English text provider and a line-noise bitmap provider configured by default, which makes the web control usable out-of-the-box.  You can create your own text, image and filter provider implementations if you have your own CAPTCHA algorithms that you'd like to use, or just configure the existing filters to customize the default output.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 1&lt;/b&gt;&lt;br /&gt;This example illustrates the minimum required configuration to use the AIP web control.  Add the &lt;span class="codeInline"&gt;httpHandlers&lt;/span&gt; registration to your &lt;i&gt;web.config&lt;/i&gt; file exactly as it appears here: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;AIP.ashx&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;b&gt;Note:&lt;/b&gt; An &lt;b&gt;AIP.ashx&lt;/b&gt; file &lt;i&gt;does not exist&lt;/i&gt;.  ASP.NET routes requests to the AIP request handler automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 2&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Note that this example only applies to AIP 1.0.  Refer to the 2.0 Beta documentation for 2.0 examples.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Here is an example configuration section for AIP that uses a text provider to generate random characters, the resource-based bitmap provider, the translucent bar overlay filter provider, and also adds a custom filter provider named, &lt;i&gt;crosshatch&lt;/i&gt;: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;sectionGroup name=&amp;quot;dsweb&amp;quot;&amp;gt;
      &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/sectionGroup&amp;gt;
  &amp;lt;/configSections&amp;gt;
  &amp;lt;dsweb&amp;gt;
    &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;randomtext&amp;quot; defaultBitmapProvider=&amp;quot;resource&amp;quot;&amp;gt;
      &amp;lt;textProviders&amp;gt;
        &amp;lt;add name=&amp;quot;randomtext&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot;
             minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
      &amp;lt;/textProviders&amp;gt;
      &amp;lt;bitmapProviders&amp;gt;
        &amp;lt;add name=&amp;quot;resource&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionBitmapProvider, DaveSexton.AutoInputProtection&amp;quot;
             minimumCharacterRotationDegrees=&amp;quot;-15&amp;quot; maximumCharacterRotationDegrees=&amp;quot;15&amp;quot; /&amp;gt;
      &amp;lt;/bitmapProviders&amp;gt;
      &amp;lt;filters&amp;gt;
        &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
        &amp;lt;add name=&amp;quot;crosshatch&amp;quot;
             type=&amp;quot;CrossHatchAutoInputProtectionFilterProvider&amp;quot; /&amp;gt;
      &amp;lt;/filters&amp;gt;
    &amp;lt;/autoInputProtection&amp;gt;
  &amp;lt;/dsweb&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add path=&amp;quot;AIP.ashx&amp;quot; verb=&amp;quot;GET&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9478" alt="Example-CrossHatch1.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9480" alt="Example-CrossHatch3.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9481" alt="Example-CrossHatch4.jpg" /&gt;&lt;br /&gt;&lt;b&gt;Figure 1: Rendered Examples&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;For information on the &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; class, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; is built-in to the AIP library.  The new implementation also provides randomization and extra options.&lt;br /&gt; &lt;br /&gt;For information about the &lt;span class="codeInline"&gt;dsweb&lt;/span&gt; configuration section, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#configure"&gt;How Do I configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, the &lt;span class="codeInline"&gt;&amp;lt;dsweb&amp;gt;&lt;/span&gt; section group is no longer used.  Instead, the &lt;span class="codeInline"&gt;&amp;lt;autoInputProtection/&amp;gt;&lt;/span&gt; section is used by itself.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="spam"&gt;&lt;/a&gt;About Spam
&lt;/h3&gt;Spam is a problem.  Not only is it annoying but it's also immoral, and sometimes illegal.  Spammers attempt to make money at your expense or decrease the value of the services that your website provides.  The latter case is not usually classified as spam, however, but is actually some form of hacking instead; AIP will help you to protect your web forms against both types of automated attacks, regardless of the attacker's intention.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Link Attack&lt;/b&gt;&lt;br /&gt;A spammer will look for unprotected blogs, forums and wikis that allow links to be posted.  The spammer will do what it takes to get their links visible on your web pages.  When a link to a spammer's site appears in your website, and your site is indexed by some search engine such as Google, the mere presence of the spammer's link may increase the score of the their website in the search engine.  A higher score increases the chances that their site will appear closer to the top in search results.  Higher score/rank can mean increased sales and profit from embedded ads in the spammer's site simply because they are increasing their site's visibility on the net.  You suffer, your blog/forum/wiki/website users suffer and Joe Spammer makes some loot.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Automated Attack&lt;/b&gt;&lt;br /&gt;Spammers, just like legitimate businesses with morals, find ways to automate processes using computers.  One such way is automated blog spamming, for example.  A computer program searches the more well-known blog sites, and personal blogs that use commercial software, to find anonymous comment forms where they can post their site's links, automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Protection from Automated Spammers&lt;/b&gt;&lt;br /&gt;There are ways that you can protect your sites and blogs from these types of spam attacks.  CAPTCHA is only one of those ways, and it isn't always the most appropriate either.  One problem with CAPTCHA, for example, is that it's not accessibility-friendly.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;How does an image with text help?&lt;/b&gt;&lt;br /&gt;CAPTCHA renders text in an image because computers have a much harder time parsing image-based text than people do.  A user can &lt;i&gt;easily&lt;/i&gt; duplicate the text that they see while computers cannot.  This allows websites to distinguish between legitimate users and automated spamming software.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;A Spammers Response to CAPTCHA&lt;/b&gt;&lt;br /&gt;One line-of-attack that automated spammers use against CAPTCHA is optical character recognition (OCR).  OCR is software that can read text from an image.  Examples of OCR can be found in programs such as Adobe Acrobat and Microsoft Office OneNote, which allows you to search for text in embedded images.&lt;br /&gt; &lt;br /&gt;You can defend against spammer's OCR by making it harder for computers to distinguish between the outline of characters and the image's background, or clutter-content; as long as a human can &lt;i&gt;easily&lt;/i&gt; distinguish between the validation text and the rest of the image, you have yourself a CAPTCHA solution.&lt;br /&gt; &lt;br /&gt;Examples of CAPTCHA can be found on many websites that provide public web forms for site membership or simple data entry, such as right here on CodePlex when you register a new project!&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="resources"&gt;&lt;/a&gt;External Resources
&lt;/h3&gt;Here is a list of resources that you can use to start researching about spam and methods for protection like CAPTCHA.&lt;br /&gt; &lt;br /&gt;Spam in blogs. (2007, March 13). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;CAPTCHA. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Optical character recognition. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 11:28, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="help"&gt;&lt;/a&gt;Help and Feedback
&lt;/h3&gt;AIP 2.0 Beta provides a standalone compiled help file and the installer integrates documentation into Visual Studio 2005 and 2008 automatically.  Refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes&lt;/a&gt; for more information.&lt;br /&gt; &lt;br /&gt;For help performing some of the more common tasks associated with AIP, see the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;For information about AIP text, bitmap and filter providers, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=Home"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;For questions and concerns that aren't addressed by the wikis you may use the &lt;b&gt;Discussions&lt;/b&gt; area and bugs may be reported in the &lt;b&gt;Issue Tracker&lt;/b&gt;.  If you prefer to submit your questions or comments to the team then please contact, &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;; however, if you are asking a question then please check the wikis and &lt;b&gt;Discussions&lt;/b&gt; for answers first!&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 13:48:30 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080402014830P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=Home&amp;version=30</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="#Examples"&gt;Examples&lt;/a&gt; | &lt;a href="#Features"&gt;Features&lt;/a&gt; | &lt;a href="#require"&gt;Requirements&lt;/a&gt; | &lt;a href="#project"&gt;Project&lt;/a&gt; | &lt;a href="#usage"&gt;Usage&lt;/a&gt; | &lt;a href="#appearance"&gt;Appearance&lt;/a&gt; | &lt;a href="#config"&gt;Configuration&lt;/a&gt; | &lt;a href="#spam"&gt;About Spam&lt;/a&gt; | &lt;a href="#resources"&gt;External Resources&lt;/a&gt; | &lt;a href="#help"&gt;Help and Feedback&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=Wikimap&amp;amp;referringTitle=Home"&gt;&amp;lt;Wikimap&amp;gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RTW1&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 1.0 RTW&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 2.0 Beta&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;AIP is an extensible ASP.NET web control that provides CAPTCHA protection for your blogs, forums, wikis and websites, greatly reducing the likelihood of unwanted form submission from automated spam and hacks.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP 2.0 Beta works with Visual Studio 2005, 2008, and Visual Web Developer Express&lt;/b&gt;.  The AIP web control provides design-time support in Visual Studio 2005 and 2008.  The installer automatically adds the control to the toolbox and merges the AIP documentation into Visual Studio's help.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP works with minimal configuration&lt;/b&gt;.  Only an HTTP request handler must be added to your web.config file and you'll be able to use the control on all of your web pages that require protection.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP uses a server-side event&lt;/b&gt; of a custom validator control to test user input so that if user validation fails, &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP is fully extensible&lt;/b&gt;.  You can define a custom layout template for the control and configure built-in text, image and filter providers to produce random CAPTCHAs in various formats.  You can also create custom providers that generate randomized text, images and filters.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Examples"&gt;&lt;/a&gt;Examples
&lt;/h3&gt;The following example uses the AIP web control with its default template and the default text and image providers (basic English and line noise, respectively).&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=11028" alt="Example-Default.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The next example uses a custom data-bound template and various built-in providers.&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=8979" alt="Example-Blog.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The final example illustrates a random CAPTCHA that has been generated using built-in text and filter providers, and a custom image provider.  (Note that a randomized cross hatch filter provider is now built-in as of 2.0 Beta.)&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9479" alt="Example-CrossHatch2.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Features"&gt;&lt;/a&gt;Features
&lt;/h3&gt;The AIP Web Control&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;works out-of-the-box with minimal configuration; only the Http Handler must be configured.&lt;/li&gt;&lt;li&gt;2.0 Beta can be configured to use the ASP.NET cache or session state (useful for web farms).  The web control also works with view state disabled.&lt;/li&gt;&lt;li&gt;can be used on web form and user control designers in Visual Studio.&lt;/li&gt;&lt;li&gt;can be edited in template-mode with two placeholder controls; one that provides the location of the CAPTCHA image and another provides the validation textbox.  Literal content and server controls are supported in the template for complete control over its appearance.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; 2.0 Beta no longer requires placeholder controls in custom templates.  Instead, you must add an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;uses ASP.NET validation controls.  Check &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; upon post-back to determine whether validation succeeded.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;You can specify custom error messages for a validation summary.  2.0 Beta also provides properties to set in-line error messages.&lt;/li&gt;&lt;li&gt;The control in 2.0 Beta exposes a &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; property that will automatically set the &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; properties of the validator controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;The CAPTCHA text&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;can be generated with a custom algorithm.&lt;/li&gt;&lt;li&gt;can be random, basic English words from the Ogden dictionary, which is built-in to the AIP library.&lt;/li&gt;&lt;li&gt;can be characters chosen at random from a configurable character set that includes any combination of upper-case and lower-case letters, the number zero, positive digits and pre-defined symbols.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;The default list of characters that are excluded can be modified.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;can be case-sensitive for validation.&lt;/li&gt;&lt;li&gt;has a random length that is configurable with maximum and minimum values.&lt;/li&gt;&lt;li&gt;has a customizable appearance, providing control over the list of sampled colors and fonts, the size range of characters, and provider-specific attributes that are all configured in the web.config file.&lt;/li&gt;
&lt;/ul&gt;The AIP library&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;produces random output that can easily be configured to vary greatly in appearance between sites.&lt;/li&gt;&lt;li&gt;is extensible, using custom ASP.NET 2.0 providers to generate the CAPTCHA text and image, and to apply graphical filters.&lt;/li&gt;&lt;li&gt;has a text provider that chooses words from the Ogden dictionary.&lt;/li&gt;&lt;li&gt;has a text provider that chooses random characters.&lt;/li&gt;&lt;li&gt;has a base bitmap provider that creates a bitmap with text rendered in evenly spaced vertical partitions.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders line-noise with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders 1 of 5 random background images with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a filter provider that can render randomized translucent bars, vertically or horizontally, as an overlay.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
&lt;a name="require"&gt;&lt;/a&gt;Requirements
&lt;/h3&gt;AIP only requires ASP.NET 2.0.&lt;br /&gt; &lt;br /&gt;Install the Microsoft .NET Framework 2.0, 3.0 or 3.5 to use AIP in your web sites.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="project"&gt;&lt;/a&gt;Project
&lt;/h3&gt;The AIP project was written, and will continue to be written, exclusively in C#.&lt;br /&gt; &lt;br /&gt;AIP 2.0 Beta was built with C# 3.0 and Visual Studio 2008, but the compiled assembly targets the Microsoft .NET Framework 2.0.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Plans&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Globalization&lt;/li&gt;&lt;li&gt;Community participation in the development of new image filters for CAPTCHA algorithms&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Team&lt;/b&gt;&lt;br /&gt;If you'd like to become a team member, please contact &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  As indicated above, anyone that can implement image filters in C# for different/better CAPTCHA algorithms would make a great addition to the team.  Please mention some of your qualifications and your motivation for becoming a team member in your email.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="usage"&gt;&lt;/a&gt;Usage
&lt;/h3&gt;Add the AIP web control to your web forms and an image containing random text will be generated automatically, unique to each request.  Users must enter the text that they see into a textbox before submitting the form.  If a user enters invalid text then &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false on post-back.  You can use &lt;span class="codeInline"&gt;ValidationSummary&lt;/span&gt; controls to display errors or set in-line error message properties on the AIP web control.&lt;br /&gt; &lt;br /&gt;For more information please refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="appearance"&gt;&lt;/a&gt;Appearance
&lt;/h3&gt;The appearance of the AIP web control may be customized in a designer, declaratively in the HTML page or programmatically in code-behind (or code-beside).&lt;br /&gt; &lt;br /&gt;&lt;b&gt;2.0 Beta&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output.  All that is required is an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;1.0 RTW&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output using an AIP image placeholder control and an AIP textbox placeholder control, which are used to indicate where the image and textbox controls should be placed, respectively, within your custom HTML template.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="config"&gt;&lt;/a&gt;Configuration
&lt;/h3&gt;AIP is configured in your website's web.config file using ASP.NET 2.0 providers.  One provider generates the text, one renders the image and any number of filter providers may be configured to help randomize the output.  AIP has a basic English text provider and a line-noise bitmap provider configured by default, which makes the web control usable out-of-the-box.  You can create your own text, image and filter provider implementations if you have your own CAPTCHA algorithms that you'd like to use, or just configure the existing filters to customize the default output.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 1&lt;/b&gt;&lt;br /&gt;This example illustrates the minimum required configuration to use the AIP web control.  Add the &lt;span class="codeInline"&gt;httpHandlers&lt;/span&gt; registration to your &lt;i&gt;web.config&lt;/i&gt; file exactly as it appears here: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;AIP.ashx&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;b&gt;Note:&lt;/b&gt; An &lt;b&gt;AIP.ashx&lt;/b&gt; file &lt;i&gt;does not exist&lt;/i&gt;.  ASP.NET routes requests to the AIP request handler automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 2&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Note that this example only applies to AIP 1.0.  Refer to the 2.0 Beta documentation for 2.0 examples.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Here is an example configuration section for AIP that uses a text provider to generate random characters, the resource-based bitmap provider, the translucent bar overlay filter provider, and also adds a custom filter provider named, &lt;i&gt;crosshatch&lt;/i&gt;: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;sectionGroup name=&amp;quot;dsweb&amp;quot;&amp;gt;
      &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/sectionGroup&amp;gt;
  &amp;lt;/configSections&amp;gt;
  &amp;lt;dsweb&amp;gt;
    &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;randomtext&amp;quot; defaultBitmapProvider=&amp;quot;resource&amp;quot;&amp;gt;
      &amp;lt;textProviders&amp;gt;
        &amp;lt;add name=&amp;quot;randomtext&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot;
             minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
      &amp;lt;/textProviders&amp;gt;
      &amp;lt;bitmapProviders&amp;gt;
        &amp;lt;add name=&amp;quot;resource&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionBitmapProvider, DaveSexton.AutoInputProtection&amp;quot;
             minimumCharacterRotationDegrees=&amp;quot;-15&amp;quot; maximumCharacterRotationDegrees=&amp;quot;15&amp;quot; /&amp;gt;
      &amp;lt;/bitmapProviders&amp;gt;
      &amp;lt;filters&amp;gt;
        &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
        &amp;lt;add name=&amp;quot;crosshatch&amp;quot;
             type=&amp;quot;CrossHatchAutoInputProtectionFilterProvider&amp;quot; /&amp;gt;
      &amp;lt;/filters&amp;gt;
    &amp;lt;/autoInputProtection&amp;gt;
  &amp;lt;/dsweb&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add path=&amp;quot;AIP.ashx&amp;quot; verb=&amp;quot;GET&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9478" alt="Example-CrossHatch1.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9480" alt="Example-CrossHatch3.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9481" alt="Example-CrossHatch4.jpg" /&gt;&lt;br /&gt;&lt;b&gt;Figure 1: Rendered Examples&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;For information on the &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; class, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; is built-in to the AIP library.  The new implementation also provides randomization and extra options.&lt;br /&gt; &lt;br /&gt;For information about the &lt;span class="codeInline"&gt;dsweb&lt;/span&gt; configuration section, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#configure"&gt;How Do I configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, the &lt;span class="codeInline"&gt;&amp;lt;dsweb&amp;gt;&lt;/span&gt; section group is no longer used.  Instead, the &lt;span class="codeInline"&gt;&amp;lt;autoInputProtection/&amp;gt;&lt;/span&gt; section is used by itself.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="spam"&gt;&lt;/a&gt;About Spam
&lt;/h3&gt;Spam is a problem.  Not only is it annoying but it's also immoral, and sometimes illegal.  Spammers attempt to make money at your expense or decrease the value of the services that your website provides.  The latter case is not usually classified as spam, however, but is actually some form of hacking instead; AIP will help you to protect your web forms against both types of automated attacks, regardless of the attacker's intention.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Link Attack&lt;/b&gt;&lt;br /&gt;A spammer will look for unprotected blogs, forums and wikis that allow links to be posted.  The spammer will do what it takes to get their links visible on your web pages.  When a link to a spammer's site appears in your website, and your site is indexed by some search engine such as Google, the mere presence of the spammer's link may increase the score of the their website in the search engine.  A higher score increases the chances that their site will appear closer to the top in search results.  Higher score/rank can mean increased sales and profit from embedded ads in the spammer's site simply because they are increasing their site's visibility on the net.  You suffer, your blog/forum/wiki/website users suffer and Joe Spammer makes some loot.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Automated Attack&lt;/b&gt;&lt;br /&gt;Spammers, just like legitimate businesses with morals, find ways to automate processes using computers.  One such way is automated blog spamming, for example.  A computer program searches the more well-known blog sites, and personal blogs that use commercial software, to find anonymous comment forms where they can post their site's links, automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Protection from Automated Spammers&lt;/b&gt;&lt;br /&gt;There are ways that you can protect your sites and blogs from these types of spam attacks.  CAPTCHA is only one of those ways, and it isn't always the most appropriate either.  One problem with CAPTCHA, for example, is that it's not accessibility-friendly.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;How does an image with text help?&lt;/b&gt;&lt;br /&gt;CAPTCHA renders text in an image because computers have a much harder time parsing image-based text than people do.  A user can &lt;i&gt;easily&lt;/i&gt; duplicate the text that they see while computers cannot.  This allows websites to distinguish between legitimate users and automated spamming software.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;A Spammers Response to CAPTCHA&lt;/b&gt;&lt;br /&gt;One line-of-attack that automated spammers use against CAPTCHA is optical character recognition (OCR).  OCR is software that can read text from an image.  Examples of OCR can be found in programs such as Adobe Acrobat and Microsoft Office OneNote, which allows you to search for text in embedded images.&lt;br /&gt; &lt;br /&gt;You can defend against spammer's OCR by making it harder for computers to distinguish between the outline of characters and the image's background, or clutter-content; as long as a human can &lt;i&gt;easily&lt;/i&gt; distinguish between the validation text and the rest of the image, you have yourself a CAPTCHA solution.&lt;br /&gt; &lt;br /&gt;Examples of CAPTCHA can be found on many websites that provide public web forms for site membership or simple data entry, such as right here on CodePlex when you register a new project!&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="resources"&gt;&lt;/a&gt;External Resources
&lt;/h3&gt;Here is a list of resources that you can use to start researching about spam and methods for protection like CAPTCHA.&lt;br /&gt; &lt;br /&gt;Spam in blogs. (2007, March 13). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;CAPTCHA. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Optical character recognition. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 11:28, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="help"&gt;&lt;/a&gt;Help and Feedback
&lt;/h3&gt;AIP 2.0 Beta provides a standalone compiled help file and the installer integrates documentation into Visual Studio 2005 and 2008 automatically.  Refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes&lt;/a&gt; for more information.&lt;br /&gt; &lt;br /&gt;For help performing some of the more common tasks associated with AIP, see the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;For information about AIP text, bitmap and filter providers, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=Home"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;For questions and concerns that aren't addressed by the wikis you may use the &lt;b&gt;Discussions&lt;/b&gt; area and bugs may be reported in the &lt;b&gt;Issue Tracker&lt;/b&gt;.  If you prefer to submit your questions or comments to the team then please contact, &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;; however, if you are asking a question then please check the wikis and &lt;b&gt;Discussions&lt;/b&gt; for answers first!&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 13:44:30 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080402014430P</guid></item><item><title>UPDATED WIKI: AIPProvidersBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
AIP Providers
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=AIPProvidersBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;There are three kinds of providers used by AIP: &lt;a href="#text"&gt;text&lt;/a&gt;, &lt;a href="#image"&gt;image&lt;/a&gt; and &lt;a href="#filter"&gt;filter&lt;/a&gt; providers.  The AIP library provides implementations of each so that you can immediately use the AIP web control in your websites.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="text"&gt;&lt;/a&gt;Text Providers
&lt;/h3&gt;Text providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.  The purpose of a text provider is to generate random CAPTCHA text and validate the user's input.&lt;br /&gt; &lt;br /&gt;For help creating a custom text provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createtextprovider"&gt;How Do I create a custom AIP text provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Text providers may be added to the &lt;span class="codeInline"&gt;textProviders&lt;/span&gt; collection element in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section of a web.config file.  For example:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;autoInputProtection&amp;gt;
  &amp;lt;textProviders&amp;gt;
    &amp;lt;add name=&amp;quot;a text provider&amp;quot;
         type=&amp;quot;DaveSexton.Web.Controls.BasicEnglishAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
         colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial&amp;quot; /&amp;gt;
  &amp;lt;/textProviders&amp;gt;
&amp;lt;/autoInputProtection&amp;gt;
&lt;/pre&gt;The &lt;span class="codeInline"&gt;colors&lt;/span&gt; and &lt;span class="codeInline"&gt;fonts&lt;/span&gt; attributes are required for all text providers, regardless of the implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Default Text Provider&lt;/b&gt;&lt;br /&gt;A default text provider is required by the AIP web control.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  The specified name must correspond with a provider that you have added to the &lt;span class="codeInline"&gt;textProviders&lt;/span&gt; element.&lt;br /&gt; &lt;br /&gt;If you do not add a &lt;span class="codeInline"&gt;textProviders&lt;/span&gt; element to the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file, then the basic English text provider will be used automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Text Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;BasicEnglishAutoInputProtectionTextProvider (default)&lt;/li&gt;&lt;li&gt;RandomCharactersAutoInputProtectionTextProvider&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="image"&gt;&lt;/a&gt;Image Providers
&lt;/h3&gt;Image providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionImageProvider&lt;/span&gt; class, directly or indirectly.  The purpose of an image provider is to create a class that derives from &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt;, which will generate an image from the specified &lt;span class="codeInline"&gt;Size&lt;/span&gt; and &lt;span class="codeInline"&gt;AutoInputProtectionTextProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;For help creating a custom image provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createimageprovider"&gt;How Do I create a custom AIP image provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Image providers may be added to the &lt;span class="codeInline"&gt;imageProviders&lt;/span&gt; collection element in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section of a web.config file.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;autoInputProtection&amp;gt;
  &amp;lt;imageProviders&amp;gt;
    &amp;lt;add name=&amp;quot;an image provider&amp;quot; 
         type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionImageProvider, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
  &amp;lt;/imageProviders&amp;gt;
&amp;lt;/autoInputProtection&amp;gt;
&lt;/pre&gt;There are no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Default Image Provider&lt;/b&gt;&lt;br /&gt;A default image provider is required by the AIP web control.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultImageProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  The specified name must correspond with a provider that you have added to the &lt;span class="codeInline"&gt;imageProviders&lt;/span&gt; element.&lt;br /&gt; &lt;br /&gt;If you do not add an &lt;span class="codeInline"&gt;imageProviders&lt;/span&gt; element to the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file, then the line-noise image provider will be used automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Image Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations and a derived abstract base class built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;PartitionedAutoInputProtectionImageProvider (abstract)&lt;/li&gt;&lt;li&gt;ResourceAutoInputProtectionImageProvider&lt;/li&gt;&lt;li&gt;LineNoiseAutoInputProtectionImageProvider (default)&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="filter"&gt;&lt;/a&gt;Filter Providers
&lt;/h3&gt;Filter providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.  Filters are optional providers that will modify the image generated by an image provider.  Filter providers are used to increase the randomization of AIP or to make the generated images aesthetically pleasing in the context of your website.  They are especially useful for applying common effects to third-party image providers.  Filters are purely graphical and do not have any reference to the validation text.&lt;br /&gt; &lt;br /&gt;For help creating a custom filter provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Filter providers may be added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; collection element in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section of a web.config file.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;autoInputProtection&amp;gt;
  &amp;lt;filters&amp;gt;
    &amp;lt;add name=&amp;quot;horizontal bars&amp;quot; 
         type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
         colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
  &amp;lt;/filters&amp;gt;
&amp;lt;/autoInputProtection&amp;gt;
&lt;/pre&gt;Any number of filters may be applied.  The order in which the filters are processed is the order in which they are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element, top-down, in your &lt;i&gt;web.config&lt;/i&gt; file.  All of the filters in the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element are used; if you want to exclude a filter then you must remove it from the configuration.&lt;br /&gt; &lt;br /&gt;The base filter provider has no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;; however, the &lt;span class="codeInline"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/span&gt; class requires the &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute to be specified as well.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Filter Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/li&gt;&lt;li&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Modes of Operation&lt;/b&gt;&lt;br /&gt;There are two modes in which a filter provider may be applied: &lt;b&gt;Preprocess&lt;/b&gt; and &lt;b&gt;Post-process&lt;/b&gt;.  Filters may provide one or both modes.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;PreProcess&lt;/b&gt;&lt;br /&gt;A preprocess filter applies to the background image before the &lt;i&gt;composite image&lt;/i&gt; has been created.  The composite image is the image's background with the validation text rendered on top.  The background image is referred to as a &lt;i&gt;surface image&lt;/i&gt; and it's provided by an &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt; implementation, which is provided by an &lt;span class="codeInline"&gt;AutoInputProtectionImageProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Post-Process&lt;/b&gt;&lt;br /&gt;A post-process filter applies to the composite image, which includes the prerendered challenge text.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:57:11 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: AIPProvidersBeta2 20080402125711P</guid></item><item><title>UPDATED WIKI: AIPProvidersBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
AIP Providers
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=AIPProvidersBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;There are three kinds of providers used by AIP: &lt;a href="#text"&gt;text&lt;/a&gt;, &lt;a href="#image"&gt;image&lt;/a&gt; and &lt;a href="#filter"&gt;filter&lt;/a&gt; providers.  The AIP library provides implementations of each so that you can immediately use the AIP web control in your websites.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="text"&gt;&lt;/a&gt;Text Providers
&lt;/h3&gt;Text providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.  The purpose of a text provider is to generate random CAPTCHA text and validate the user's input.&lt;br /&gt; &lt;br /&gt;For help creating a custom text provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createtextprovider"&gt;How Do I create a custom AIP text provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Text providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;textProviders&lt;/span&gt; collection element.  For example:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;textProviders&amp;gt;
  &amp;lt;add name=&amp;quot;a_text_provider&amp;quot;
       type=&amp;quot;DaveSexton.Web.Controls.BasicEnglishAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot; /&amp;gt;
&amp;lt;/textProviders&amp;gt;
&lt;/pre&gt;The &lt;span class="codeInline"&gt;colors&lt;/span&gt; and &lt;span class="codeInline"&gt;fonts&lt;/span&gt; attributes are required for all text providers, regardless of the implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Default Text Provider&lt;/b&gt;&lt;br /&gt;A default text provider is required by the AIP web control.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  The specified name must correspond with a provider that you have added to the {{textProviders} element.&lt;br /&gt; &lt;br /&gt;If you do not add a {{textProviders}} element to the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file, then the basic English text provider will be used automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Text Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;BasicEnglishAutoInputProtectionTextProvider (default)&lt;/li&gt;&lt;li&gt;RandomCharactersAutoInputProtectionTextProvider&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="image"&gt;&lt;/a&gt;Image Providers
&lt;/h3&gt;Image providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionImageProvider&lt;/span&gt; class, directly or indirectly.  The purpose of an image provider is to create a class that derives from &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt;, which will generate an image from the specified &lt;span class="codeInline"&gt;Size&lt;/span&gt; and &lt;span class="codeInline"&gt;AutoInputProtectionTextProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;For help creating a custom image provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createimageprovider"&gt;How Do I create a custom AIP image provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Image providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;imageProviders&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;imageProviders&amp;gt;
  &amp;lt;add name=&amp;quot;an image provider&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionImageProvider, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
&amp;lt;/imageProviders&amp;gt;
&lt;/pre&gt;There are no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Default Image Provider&lt;/b&gt;&lt;br /&gt;A default image provider is required by the AIP web control.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultImageProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  The specified name must correspond with a provider that you have added to the {{imageProviders} element.&lt;br /&gt; &lt;br /&gt;If you do not add an {{imageProviders}} element to the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file, then the line-noise image provider will be used automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Image Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations and a derived abstract base class built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;PartitionedAutoInputProtectionImageProvider (abstract)&lt;/li&gt;&lt;li&gt;ResourceAutoInputProtectionImageProvider&lt;/li&gt;&lt;li&gt;LineNoiseAutoInputProtectionImageProvider (default)&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="filter"&gt;&lt;/a&gt;Filter Providers
&lt;/h3&gt;Filter providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.  Filters are optional providers that will modify the image generated by an image provider.  Filter providers are used to increase the randomization of AIP or to make the generated images aesthetically pleasing in the context of your website.  They are especially useful for applying common effects to third-party image providers.  Filters are purely graphical and do not have any reference to the validation text.&lt;br /&gt; &lt;br /&gt;For help creating a custom filter provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Filter providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;filters&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;filters&amp;gt;
  &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
&amp;lt;/filters&amp;gt;
&lt;/pre&gt;Any number of filters may be applied.  The order in which the filters are processed is the order in which they are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element, top-down, in your &lt;i&gt;web.config&lt;/i&gt; file.  All of the filters in the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element are used; if you want to exclude a filter then you must remove it from the configuration.&lt;br /&gt; &lt;br /&gt;The base filter provider has no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;; however, the &lt;span class="codeInline"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/span&gt; class requires the &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute to be specified as well.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Filter Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/li&gt;&lt;li&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Modes of Operation&lt;/b&gt;&lt;br /&gt;There are two modes in which a filter provider may be applied: &lt;b&gt;Preprocess&lt;/b&gt; and &lt;b&gt;Post-process&lt;/b&gt;.  Filters may provide one or both modes.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;PreProcess&lt;/b&gt;&lt;br /&gt;A preprocess filter applies to the background image before the &lt;i&gt;composite image&lt;/i&gt; has been created.  The composite image is the image's background with the validation text rendered on top.  The background image is referred to as a &lt;i&gt;surface image&lt;/i&gt; and it's provided by an &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt; implementation, which is provided by an &lt;span class="codeInline"&gt;AutoInputProtectionImageProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Post-Process&lt;/b&gt;&lt;br /&gt;A post-process filter applies to the composite image, which includes the prerendered challenge text.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:49:40 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: AIPProvidersBeta2 20080402124940P</guid></item><item><title>UPDATED WIKI: AIPProvidersBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
AIP Providers
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=AIPProvidersBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;There are three kinds of providers used by AIP: &lt;a href="#text"&gt;text&lt;/a&gt;, &lt;a href="#image"&gt;image&lt;/a&gt; and &lt;a href="#filter"&gt;filter&lt;/a&gt; providers.  The AIP library provides implementations of each so that you can immediately use the AIP web control in your websites.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="text"&gt;&lt;/a&gt;Text Providers
&lt;/h4&gt;Text providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.  The purpose of a text provider is to generate random CAPTCHA text and validate the user's input.&lt;br /&gt; &lt;br /&gt;For help creating a custom text provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createtextprovider"&gt;How Do I create a custom AIP text provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Text providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;textProviders&lt;/span&gt; collection element.  For example:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;textProviders&amp;gt;
  &amp;lt;add name=&amp;quot;a_text_provider&amp;quot;
       type=&amp;quot;DaveSexton.Web.Controls.BasicEnglishAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot; /&amp;gt;
&amp;lt;/textProviders&amp;gt;
&lt;/pre&gt;The &lt;span class="codeInline"&gt;colors&lt;/span&gt; and &lt;span class="codeInline"&gt;fonts&lt;/span&gt; attributes are required for all text providers, regardless of the implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Default Text Provider&lt;/b&gt;&lt;br /&gt;A default text provider is required by the AIP web control.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  The specified name must correspond with a provider that you have added to the {{textProviders} element.&lt;br /&gt; &lt;br /&gt;If you do not add a {{textProviders}} element to the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file, then the basic English text provider will be used automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Text Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;BasicEnglishAutoInputProtectionTextProvider (default)&lt;/li&gt;&lt;li&gt;RandomCharactersAutoInputProtectionTextProvider&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="image"&gt;&lt;/a&gt;Image Providers
&lt;/h4&gt;Image providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionImageProvider&lt;/span&gt; class, directly or indirectly.  The purpose of an image provider is to create a class that derives from &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt;, which will generate an image from the specified &lt;span class="codeInline"&gt;Size&lt;/span&gt; and &lt;span class="codeInline"&gt;AutoInputProtectionTextProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;For help creating a custom image provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createimageprovider"&gt;How Do I create a custom AIP image provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Image providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;imageProviders&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;imageProviders&amp;gt;
  &amp;lt;add name=&amp;quot;an image provider&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionImageProvider, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
&amp;lt;/imageProviders&amp;gt;
&lt;/pre&gt;There are no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Default Image Provider&lt;/b&gt;&lt;br /&gt;A default image provider is required by the AIP web control.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultImageProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  The specified name must correspond with a provider that you have added to the {{imageProviders} element.&lt;br /&gt; &lt;br /&gt;If you do not add an {{imageProviders}} element to the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file, then the line-noise image provider will be used automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Image Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations and a derived abstract base class built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;PartitionedAutoInputProtectionImageProvider (abstract)&lt;/li&gt;&lt;li&gt;ResourceAutoInputProtectionImageProvider&lt;/li&gt;&lt;li&gt;LineNoiseAutoInputProtectionImageProvider (default)&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="filter"&gt;&lt;/a&gt;Filter Providers
&lt;/h4&gt;Filter providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.  Filters are optional providers that will modify the image generated by an image provider.  Filter providers are used to increase the randomization of AIP or to make the generated images aesthetically pleasing in the context of your website.  They are especially useful for applying common effects to third-party image providers.  Filters are purely graphical and do not have any reference to the validation text.&lt;br /&gt; &lt;br /&gt;For help creating a custom filter provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Filter providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;filters&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;filters&amp;gt;
  &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
&amp;lt;/filters&amp;gt;
&lt;/pre&gt;Any number of filters may be applied.  The order in which the filters are processed is the order in which they are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element, top-down, in your &lt;i&gt;web.config&lt;/i&gt; file.  All of the filters in the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element are used; if you want to exclude a filter then you must remove it from the configuration.&lt;br /&gt; &lt;br /&gt;The base filter provider has no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;; however, the &lt;span class="codeInline"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/span&gt; class requires the &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute to be specified as well.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Filter Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/li&gt;&lt;li&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/li&gt;
&lt;/ul&gt;Refer to the reference documentation for more information.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Modes of Operation&lt;/b&gt;&lt;br /&gt;There are two modes in which a filter provider may be applied: &lt;b&gt;Preprocess&lt;/b&gt; and &lt;b&gt;Post-process&lt;/b&gt;.  Filters may provide one or both modes.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;PreProcess&lt;/b&gt;&lt;br /&gt;A preprocess filter applies to the background image before the &lt;i&gt;composite image&lt;/i&gt; has been created.  The composite image is the image's background with the validation text rendered on top.  The background image is referred to as a &lt;i&gt;surface image&lt;/i&gt; and it's provided by an &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt; implementation, which is provided by an &lt;span class="codeInline"&gt;AutoInputProtectionImageProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Post-Process&lt;/b&gt;&lt;br /&gt;A post-process filter applies to the composite image, which includes the prerendered challenge text.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:48:56 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: AIPProvidersBeta2 20080402124856P</guid></item><item><title>UPDATED WIKI: AIPProviders</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
AIP Providers
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 1.0 only.  The 2.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=AIPProviders"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;There are three kinds of providers used by AIP: &lt;a href="#text"&gt;text&lt;/a&gt;, &lt;a href="#bitmap"&gt;bitmap&lt;/a&gt; and &lt;a href="#filter"&gt;filter&lt;/a&gt; providers.  The AIP library provides implementations of each so that you can immediately use the AIP web control in your websites.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="text"&gt;&lt;/a&gt;Text Providers
&lt;/h4&gt;Text providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.  The purpose of a text provider is to generate random CAPTCHA text and validate the user's input.&lt;br /&gt; &lt;br /&gt;A default text provider is required.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  If you do not define the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file then the basic English text provider will be used automatically.&lt;br /&gt; &lt;br /&gt;For help creating a custom text provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=AIPProviders&amp;amp;ANCHOR#createtextprovider"&gt;How Do I create a custom AIP text provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Text providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;textProviders&lt;/span&gt; collection element.  For example:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;textProviders&amp;gt;
  &amp;lt;add name=&amp;quot;a_text_provider&amp;quot;
       type=&amp;quot;DaveSexton.Web.Controls.BasicEnglishAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot; /&amp;gt;
&amp;lt;/textProviders&amp;gt;
&lt;/pre&gt;The &lt;span class="codeInline"&gt;colors&lt;/span&gt; and &lt;span class="codeInline"&gt;fonts&lt;/span&gt; attributes are required for all text providers, regardless of the implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Text Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=BasicEnglishAutoInputProtectionTextProvider&amp;amp;referringTitle=AIPProviders"&gt;BasicEnglishAutoInputProtectionTextProvider&lt;/a&gt; (default)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RandomCharactersAutoInputProtectionTextProvider&amp;amp;referringTitle=AIPProviders"&gt;RandomCharactersAutoInputProtectionTextProvider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Abstract Base Class&lt;/b&gt;&lt;br /&gt;Here is the interface of the base text provider class: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public abstract class AutoInputProtectionTextProvider : ProviderBase
{
  public bool CaseSensitiveComparison { get; set; }
  public int MaximumCharacters { get; set; }
  public int MinimumCharacters { get; set; }
  public int MinimumFontSize { get; set; }
  public int MaximumFontSize { get; set; }
  public IList&amp;lt;Color&amp;gt; Colors { get; set; }
  public IList&amp;lt;Font&amp;gt; Fonts { get; set; }
 
  protected AutoInputProtectionTextProvider() { }
 
  public virtual bool ValidateUserInput(string userText, string bitmapText);
 
  public abstract string GenerateRandomAutoInputProtectionText();
}
&lt;/pre&gt;&lt;h4&gt;
&lt;a name="bitmap"&gt;&lt;/a&gt;Bitmap Providers
&lt;/h4&gt;Bitmap providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionBitmapProvider&lt;/span&gt; class, directly or indirectly.  The purpose of a bitmap provider is to create a class that derives from &lt;span class="codeInline"&gt;AutoInputProtectionBitmap&lt;/span&gt;, which will generate a bitmap from the specified &lt;span class="codeInline"&gt;Size&lt;/span&gt; and &lt;span class="codeInline"&gt;AutoInputProtectionTextProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;A default bitmap provider is required.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultBitmapProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  If you do not define the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file then the line-noise bitmap provider will be used automatically.&lt;br /&gt; &lt;br /&gt;For help creating a custom bitmap provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=AIPProviders&amp;amp;ANCHOR#createbitmapprovider"&gt;How Do I create a custom AIP bitmap provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Bitmap providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;bitmapProviders&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;bitmapProviders&amp;gt;
  &amp;lt;add name=&amp;quot;a_bitmap_provider&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionBitmapProvider, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
&amp;lt;/bitmapProviders&amp;gt;
&lt;/pre&gt;There are no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Bitmap Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations and a derived abstract base class built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=PartitionedAutoInputProtectionBitmapProvider&amp;amp;referringTitle=AIPProviders"&gt;PartitionedAutoInputProtectionBitmapProvider&lt;/a&gt; (abstract)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=ResourceAutoInputProtectionBitmapProvider&amp;amp;referringTitle=AIPProviders"&gt;ResourceAutoInputProtectionBitmapProvider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LineNoiseAutoInputProtectionBitmapProvider&amp;amp;referringTitle=AIPProviders"&gt;LineNoiseAutoInputProtectionBitmapProvider&lt;/a&gt; (default)&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Abstract Base Class&lt;/b&gt;&lt;br /&gt;Here is the interface of the base bitmap provider class: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public abstract class AutoInputProtectionBitmapProvider : ProviderBase
{
  protected AutoInputProtectionBitmapProvider();
 
  public static string ChooseRandomName(IList&amp;lt;string&amp;gt; names);
  public static string ChooseRandomName(string[] names);
 
  public abstract AutoInputProtectionBitmap GenerateAutoInputProtectionBitmap(
    string name, Size size, AutoInputProtectionTextProvider textProvider);
  public abstract AutoInputProtectionBitmap GenerateRandomAutoInputProtectionBitmap(
    Size size, AutoInputProtectionTextProvider textProvider);
}
&lt;/pre&gt;&lt;h4&gt;
&lt;a name="filter"&gt;&lt;/a&gt;Filter Providers
&lt;/h4&gt;Filter providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.  Filters are optional providers that will modify the image generated by a bitmap provider.  Filter providers are used to increase the randomization of AIP or to make the generated images aesthetically pleasing in the context of your website.  They are especially useful for applying common effects to third-party bitmap providers.  Filters are purely graphical and do not have any reference to the validation text.&lt;br /&gt; &lt;br /&gt;For help creating a custom filter provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=AIPProviders&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Filter providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;filters&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;filters&amp;gt;
  &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
&amp;lt;/filters&amp;gt;
&lt;/pre&gt;Any number of filters may be applied.  The order in which the filters are processed is the order in which they are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element, top-down, in your &lt;i&gt;web.config&lt;/i&gt; file.  All of the filters in the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element are used; if you want to exclude a filter then you must remove it from the configuration.&lt;br /&gt; &lt;br /&gt;The base filter provider has no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;; however, the &lt;span class="codeInline"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/span&gt; class requires the &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute to be specified as well.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Filter Providers&lt;/b&gt;&lt;br /&gt;There is currently only one concrete implementation built-in to the AIP library, but it's quite flexible and can be used multiple times on the same bitmap with different settings: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=TranslucentBarsOverlayAutoInputProtectionFilterProvider&amp;amp;referringTitle=AIPProviders"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Abstract Base Class&lt;/b&gt;&lt;br /&gt;Here is the interface of the base filter provider class: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public abstract class AutoInputProtectionFilterProvider : ProviderBase, IDisposable
{
  public abstract bool CanPreProcess { get; }
  public abstract bool CanPostProcess { get; }
 
  protected bool IsDisposed;
 
  protected AutoInputProtectionFilterProvider();
 
  public abstract void PreProcess(Graphics graphics, Size bitmapSize);
  public abstract void PostProcess(Graphics graphics, Size bitmapSize);
 
  // canonical disposal pattern
  public void Dispose();
  protected virtual void Dispose(bool disposing);
  ~AutoInputProtectionFilterProvider();  // finalizer
}
&lt;/pre&gt;&lt;b&gt;Modes of Operation&lt;/b&gt;&lt;br /&gt;There are two modes in which a filter provider may be applied: &lt;b&gt;Pre-process&lt;/b&gt; and &lt;b&gt;Post-process&lt;/b&gt;.  Filters may provide one or both modes.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Pre-Process&lt;/b&gt;&lt;br /&gt;A pre-process filter applies to the background image before the composite image has been created.  The composite image is the bitmap's background with the validation text rendered on top.  The background image is referred to as a &lt;b&gt;Surface Bitmap&lt;/b&gt; and it's provided by an &lt;span class="codeInline"&gt;AutoInputProtectionBitmap&lt;/span&gt; implementation, which is provided by the &lt;span class="codeInline"&gt;AutoInputProtectionBitmapProvider&lt;/span&gt; implementation that is configured as the default bitmap provider.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Post-Process&lt;/b&gt;&lt;br /&gt;A post-process filter applies to the composite image, which includes the pre-rendered validation text.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:34:54 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: AIPProviders 20080402123454P</guid></item><item><title>UPDATED WIKI: AIPProvidersBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
AIP Providers
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=AIPProvidersBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;There are three kinds of providers used by AIP: &lt;a href="#text"&gt;text&lt;/a&gt;, &lt;a href="#image"&gt;image&lt;/a&gt; and &lt;a href="#filter"&gt;filter&lt;/a&gt; providers.  The AIP library provides implementations of each so that you can immediately use the AIP web control in your websites.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="text"&gt;&lt;/a&gt;Text Providers
&lt;/h4&gt;Text providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.  The purpose of a text provider is to generate random CAPTCHA text and validate the user's input.&lt;br /&gt; &lt;br /&gt;A default text provider is required.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  If you do not define the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file then the basic English text provider will be used automatically.&lt;br /&gt; &lt;br /&gt;For help creating a custom text provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createtextprovider"&gt;How Do I create a custom AIP text provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Text providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;textProviders&lt;/span&gt; collection element.  For example:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;textProviders&amp;gt;
  &amp;lt;add name=&amp;quot;a_text_provider&amp;quot;
       type=&amp;quot;DaveSexton.Web.Controls.BasicEnglishAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot; /&amp;gt;
&amp;lt;/textProviders&amp;gt;
&lt;/pre&gt;The &lt;span class="codeInline"&gt;colors&lt;/span&gt; and &lt;span class="codeInline"&gt;fonts&lt;/span&gt; attributes are required for all text providers, regardless of the implementation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Text Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=BasicEnglishAutoInputProtectionTextProvider&amp;amp;referringTitle=AIPProvidersBeta2"&gt;BasicEnglishAutoInputProtectionTextProvider&lt;/a&gt; (default)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RandomCharactersAutoInputProtectionTextProvider&amp;amp;referringTitle=AIPProvidersBeta2"&gt;RandomCharactersAutoInputProtectionTextProvider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Abstract Base Class&lt;/b&gt;&lt;br /&gt;Here is the interface of the base text provider class: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public abstract class AutoInputProtectionTextProvider : ProviderBase
{
  public bool CaseSensitiveComparison { get; set; }
  public int MaximumCharacters { get; set; }
  public int MinimumCharacters { get; set; }
  public int MinimumFontSize { get; set; }
  public int MaximumFontSize { get; set; }
  public IList&amp;lt;Color&amp;gt; Colors { get; set; }
  public IList&amp;lt;Font&amp;gt; Fonts { get; set; }
 
  protected AutoInputProtectionTextProvider() { }
 
  public virtual bool ValidateUserInput(string userText, string imageText);
 
  public abstract string GenerateRandomAutoInputProtectionText();
}
&lt;/pre&gt;&lt;h4&gt;
&lt;a name="image"&gt;&lt;/a&gt;Image Providers
&lt;/h4&gt;Image providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionImageProvider&lt;/span&gt; class, directly or indirectly.  The purpose of an image provider is to create a class that derives from &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt;, which will generate an image from the specified &lt;span class="codeInline"&gt;Size&lt;/span&gt; and &lt;span class="codeInline"&gt;AutoInputProtectionTextProvider&lt;/span&gt; implementation.&lt;br /&gt; &lt;br /&gt;A default image provider is required.  Only one provider may be registered as the default using the &lt;span class="codeInline"&gt;defaultImageProvider&lt;/span&gt; attribute of the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; element.  If you do not define the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section in your &lt;i&gt;web.config&lt;/i&gt; file then the line-noise image provider will be used automatically.&lt;br /&gt; &lt;br /&gt;For help creating a custom image provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createimageprovider"&gt;How Do I create a custom AIP image provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Image providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;imageProviders&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;imageProviders&amp;gt;
  &amp;lt;add name=&amp;quot;an image provider&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionImageProvider, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
&amp;lt;/imageProviders&amp;gt;
&lt;/pre&gt;There are no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Image Providers&lt;/b&gt;&lt;br /&gt;There are two concrete implementations and a derived abstract base class built-in to the AIP library: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=PartitionedAutoInputProtectionImageProvider&amp;amp;referringTitle=AIPProvidersBeta2"&gt;PartitionedAutoInputProtectionImageProvider&lt;/a&gt; (abstract)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=ResourceAutoInputProtectionImageProvider&amp;amp;referringTitle=AIPProvidersBeta2"&gt;ResourceAutoInputProtectionImageProvider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LineNoiseAutoInputProtectionImageProvider&amp;amp;referringTitle=AIPProvidersBeta2"&gt;LineNoiseAutoInputProtectionImageProvider&lt;/a&gt; (default)&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Abstract Base Class&lt;/b&gt;&lt;br /&gt;Here is the interface of the base image provider class: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public abstract class AutoInputProtectionImageProvider : ProviderBase
{
  protected AutoInputProtectionImageProvider();
 
  public static string ChooseRandomName(IList&amp;lt;string&amp;gt; names);
  public static string ChooseRandomName(string[] names);
 
  public abstract AutoInputProtectionImage GenerateAutoInputProtectionImage(
    string name, Size size, AutoInputProtectionTextProvider textProvider);
  public abstract AutoInputProtectionImage GenerateRandomAutoInputProtectionImage(
    Size size, AutoInputProtectionTextProvider textProvider);
}
&lt;/pre&gt;&lt;h4&gt;
&lt;a name="filter"&gt;&lt;/a&gt;Filter Providers
&lt;/h4&gt;Filter providers are classes that derive from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.  Filters are optional providers that will modify the image generated by an image provider.  Filter providers are used to increase the randomization of AIP or to make the generated images aesthetically pleasing in the context of your website.  They are especially useful for applying common effects to third-party image providers.  Filters are purely graphical and do not have any reference to the validation text.&lt;br /&gt; &lt;br /&gt;For help creating a custom filter provider, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=AIPProvidersBeta2&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Filter providers are configured in the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; configuration element using the &lt;span class="codeInline"&gt;filters&lt;/span&gt; collection element.  For example: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;filters&amp;gt;
  &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
       type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
       colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
&amp;lt;/filters&amp;gt;
&lt;/pre&gt;Any number of filters may be applied.  The order in which the filters are processed is the order in which they are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element, top-down, in your &lt;i&gt;web.config&lt;/i&gt; file.  All of the filters in the &lt;span class="codeInline"&gt;filters&lt;/span&gt; element are used; if you want to exclude a filter then you must remove it from the configuration.&lt;br /&gt; &lt;br /&gt;The base filter provider has no required attributes other than &lt;span class="codeInline"&gt;name&lt;/span&gt; and &lt;span class="codeInline"&gt;type&lt;/span&gt;; however, the &lt;span class="codeInline"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/span&gt; class requires the &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute to be specified as well.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Built-In Filter Providers&lt;/b&gt;&lt;br /&gt;There is currently only one concrete implementation built-in to the AIP library, but it's quite flexible and can be used multiple times on the same image with different settings: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=TranslucentBarsOverlayAutoInputProtectionFilterProvider&amp;amp;referringTitle=AIPProvidersBeta2"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Abstract Base Class&lt;/b&gt;&lt;br /&gt;Here is the interface of the base filter provider class: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public abstract class AutoInputProtectionFilterProvider : ProviderBase, IDisposable
{
  public abstract bool CanPreProcess { get; }
  public abstract bool CanPostProcess { get; }
 
  protected bool IsDisposed;
 
  protected AutoInputProtectionFilterProvider();
 
  public abstract void PreProcess(Graphics graphics, Size imageSize);
  public abstract void PostProcess(Graphics graphics, Size imageSize);
 
  // canonical disposal pattern
  public void Dispose();
  protected virtual void Dispose(bool disposing);
  ~AutoInputProtectionFilterProvider();  // finalizer
}
&lt;/pre&gt;&lt;b&gt;Modes of Operation&lt;/b&gt;&lt;br /&gt;There are two modes in which a filter provider may be applied: &lt;b&gt;Pre-process&lt;/b&gt; and &lt;b&gt;Post-process&lt;/b&gt;.  Filters may provide one or both modes.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Pre-Process&lt;/b&gt;&lt;br /&gt;A pre-process filter applies to the background image before the composite image has been created.  The composite image is the image's background with the validation text rendered on top.  The background image is referred to as a &lt;b&gt;surface image&lt;/b&gt; and it's provided by an &lt;span class="codeInline"&gt;AutoInputProtectionImage&lt;/span&gt; implementation, which is provided by the &lt;span class="codeInline"&gt;AutoInputProtectionImageProvider&lt;/span&gt; implementation that is configured as the default image provider.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Post-Process&lt;/b&gt;&lt;br /&gt;A post-process filter applies to the composite image, which includes the pre-rendered validation text.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:34:34 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: AIPProvidersBeta2 20080402123434P</guid></item><item><title>UPDATED WIKI: HowDoIFigures</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
How Do I... Figures
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 1.0 only.  The 2.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIFigures"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;b&gt;Figure 1: httpHandlers configuration element&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add path=&amp;quot;AIP.ashx&amp;quot; verb=&amp;quot;GET&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;b&gt;Figure 2: Register TagPrefix&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;%@ Register Namespace=&amp;quot;DaveSexton.Web.Controls&amp;quot; Assembly=&amp;quot;DaveSexton.AutoInputProtection&amp;quot;
             TagPrefix=&amp;quot;dsweb&amp;quot; %&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;b&gt;Figure 3: Basic control declaration&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;dsweb:AutoInputProtectionControl runat=&amp;quot;server&amp;quot; ID=&amp;quot;aip&amp;quot; /&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure4"&gt;&lt;/a&gt;&lt;b&gt;Figure 4: Configuring a default text provider and bitmap provider example&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;sectionGroup name=&amp;quot;dsweb&amp;quot;&amp;gt;
      &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/sectionGroup&amp;gt;
  &amp;lt;/configSections&amp;gt;
  &amp;lt;dsweb&amp;gt;
    &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;randomtext&amp;quot; defaultBitmapProvider=&amp;quot;resource&amp;quot;&amp;gt;
      &amp;lt;textProviders&amp;gt;
        &amp;lt;add name=&amp;quot;randomtext&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot;
             minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
      &amp;lt;/textProviders&amp;gt;
      &amp;lt;bitmapProviders&amp;gt;
        &amp;lt;add name=&amp;quot;resource&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionBitmapProvider, DaveSexton.AutoInputProtection&amp;quot;
             minimumCharacterRotationDegrees=&amp;quot;-15&amp;quot; maximumCharacterRotationDegrees=&amp;quot;15&amp;quot; /&amp;gt;
      &amp;lt;/bitmapProviders&amp;gt;
    &amp;lt;/autoInputProtection&amp;gt;
  &amp;lt;/dsweb&amp;gt;
  ...
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure5"&gt;&lt;/a&gt;&lt;b&gt;Figure 5: Configuring a filter provider example&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;autoInputProtection&amp;gt;
  ...
  &amp;lt;filters&amp;gt;
    &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
         type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
         colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
  &amp;lt;/filters&amp;gt;
&amp;lt;/autoInputProtection&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure6"&gt;&lt;/a&gt;&lt;b&gt;Figure 6: Custom text provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using DaveSexton.Web.Controls;
using DaveSexton.Web.Controls.Configuration;
 
public class RandomNumbersAutoInputProtectionTextProvider : AutoInputProtectionTextProvider
{
  public override string GenerateRandomAutoInputProtectionText()
  {
    return RandomString.Create(MinimumCharacters, MaximumCharacters, 
      CharacterSets.PositiveDigits, null);
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure7"&gt;&lt;/a&gt;&lt;b&gt;Figure 7: Custom bitmap provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using DaveSexton.Web.Controls;
using DaveSexton.Web.Controls.Configuration;
 
public sealed class WhiteBackgroundAutoInputProtectionBitmapProvider
  : PartitionedAutoInputProtectionBitmapProvider
{
  public override AutoInputProtectionBitmap GenerateAutoInputProtectionBitmap(
    string name, System.Drawing.Size size, AutoInputProtectionTextProvider textProvider)
  {
    return GenerateBitmap(size, textProvider);
  }
 
  public override AutoInputProtectionBitmap GenerateRandomAutoInputProtectionBitmap(
    System.Drawing.Size size, AutoInputProtectionTextProvider textProvider)
  {
    return GenerateBitmap(size, textProvider);
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure8"&gt;&lt;/a&gt;&lt;b&gt;Figure 8: Custom filter provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using DaveSexton.Web.Controls.Configuration;
 
public sealed class CrossHatchAutoInputProtectionFilterProvider
  : AutoInputProtectionFilterProvider
{
  public override bool CanPostProcess
  {
    get { return true; }
  }
 
  public override bool CanPreProcess
  {
    get { return false; }
  }
 
  public override void PostProcess(System.Drawing.Graphics graphics, 
    System.Drawing.Size bitmapSize)
  {
    using (HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, 
      Color.FromArgb(100, Color.Black), Color.Transparent))
    {
      graphics.FillRectangle(brush, 0, 0, bitmapSize.Width, bitmapSize.Height);
    }
  }
 
  public override void PreProcess(System.Drawing.Graphics graphics, 
    System.Drawing.Size bitmapSize)
  {
    throw new NotImplementedException();
  }
}
&lt;/pre&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:30:33 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: HowDoIFigures 20080402123033P</guid></item><item><title>UPDATED WIKI: HowDoIFiguresBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
How Do I... Figures
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoIFiguresBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;b&gt;Figure 1: httpHandlers configuration element&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;AIP.ashx&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;b&gt;Figure 2: Register TagPrefix&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;%@ Register Namespace=&amp;quot;DaveSexton.Web.Controls&amp;quot; Assembly=&amp;quot;DaveSexton.AutoInputProtection&amp;quot;
             TagPrefix=&amp;quot;dsweb&amp;quot; %&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;b&gt;Figure 3: Basic control declaration&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;dsweb:AutoInputProtectionControl runat=&amp;quot;server&amp;quot; ID=&amp;quot;aip&amp;quot; /&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure4"&gt;&lt;/a&gt;&lt;b&gt;Figure 4: Configuring a default text provider and image provider&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
  &amp;lt;/configSections&amp;gt;
 
  &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;random text&amp;quot; defaultImageProvider=&amp;quot;resource&amp;quot;&amp;gt;
    &amp;lt;textProviders&amp;gt;
      &amp;lt;add name=&amp;quot;random text&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
           colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial&amp;quot;
           minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
    &amp;lt;/textProviders&amp;gt;
    &amp;lt;imageProviders&amp;gt;
      &amp;lt;add name=&amp;quot;resource&amp;quot; 
           type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionImageProvider, DaveSexton.AutoInputProtection&amp;quot;
           minimumCharacterRotation=&amp;quot;-15&amp;quot; maximumCharacterRotation=&amp;quot;15&amp;quot; /&amp;gt;
    &amp;lt;/imageProviders&amp;gt;
  &amp;lt;/autoInputProtection&amp;gt;
 
  ...
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure5"&gt;&lt;/a&gt;&lt;b&gt;Figure 5: Configuring filter providers&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;autoInputProtection&amp;gt;
  &amp;lt;filters&amp;gt;
    &amp;lt;add name=&amp;quot;horizontal bars&amp;quot; 
         type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
         colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;cross hatch&amp;quot; 
         type=&amp;quot;DaveSexton.Web.Controls.CrossHatchAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
         colors=&amp;quot;Red,Black&amp;quot; /&amp;gt;
  &amp;lt;/filters&amp;gt;
&amp;lt;/autoInputProtection&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure6"&gt;&lt;/a&gt;&lt;b&gt;Figure 6: Custom text provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using DaveSexton.Web.Controls;
 
public sealed class RandomNumbersAutoInputProtectionTextProvider : AutoInputProtectionTextProvider
{
  public override string GenerateRandomAutoInputProtectionText()
  {
    return RandomString.Create(MinimumCharacters, MaximumCharacters, 
      CharacterSets.PositiveDigits, null);
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure7"&gt;&lt;/a&gt;&lt;b&gt;Figure 7: Custom image provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using System.Drawing;
using DaveSexton.Web.Controls;
 
public sealed class WhiteBackgroundAutoInputProtectionImageProvider
  : PartitionedAutoInputProtectionImageProvider
{
  public override AutoInputProtectionImage GenerateAutoInputProtectionImage(
    string name, Size size, AutoInputProtectionTextProvider textProvider)
  {
    return GenerateImage(size, textProvider);
  }
 
  public override AutoInputProtectionImage GenerateRandomAutoInputProtectionImage(
    Size size, AutoInputProtectionTextProvider textProvider)
  {
    return GenerateImage(size, textProvider);
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure8"&gt;&lt;/a&gt;&lt;b&gt;Figure 8: Custom filter provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using System.Drawing;
using System.Configuration.Provider;
using DaveSexton.Web.Controls;
 
public sealed class BlueOverlayAutoInputProtectionFilterProvider
  : AutoInputProtectionFilterProvider
{
  public float Opacity { get; set; }	// C# 3.0 syntax
 
  public override bool CanPreProcess
  {
    get { return false; }
  }
 
  public override bool CanPostProcess
  {
    get { return true; }
  }
 
  public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
  {
    if (config == null)
      throw new ArgumentNullException(&amp;quot;config&amp;quot;);
 
    if (string.IsNullOrEmpty(name))
      name = &amp;quot;BlueOverlayAutoInputProtectionFilterProvider&amp;quot;;
 
    if (string.IsNullOrEmpty(config[&amp;quot;description&amp;quot;]))
    {
      config.Remove(&amp;quot;description&amp;quot;);
      config.Add(&amp;quot;description&amp;quot;, &amp;quot;Blue Overlay Auto-Input Protection Filter Provider&amp;quot;);
    }
 
    base.Initialize(name, config);
 
    ProviderHelper helper = new ProviderHelper(config);
 
    Opacity = helper.ParseSingle(&amp;quot;opacity&amp;quot;, false, .15F);
 
    // Throw an exception if unrecognized attributes remain
    if (config.Count &amp;gt; 0)
    {
      string attr = config.GetKey(0);
 
      if (!string.IsNullOrEmpty(attr))
        throw new ProviderException(&amp;quot;Unrecognized attribute: &amp;quot; + attr);
    }
  }
 
  public override void PreProcess(Graphics graphics, Size imageSize)
  {
    throw new NotSupportedException();
  }
 
  public override void PostProcess(Graphics graphics, Size imageSize)
  {
    using (Brush brush = new SolidBrush(Color.FromArgb((int)(Opacity * 255), Color.Blue)))
    {
      graphics.FillRectangle(brush, 0, 0, imageSize.Width, imageSize.Height);
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:30:06 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: HowDoIFiguresBeta2 20080402123006P</guid></item><item><title>UPDATED WIKI: HowDoIFiguresBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
How Do I... Figures
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoIFiguresBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;b&gt;Figure 1: httpHandlers configuration element&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;AIP.ashx&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;b&gt;Figure 2: Register TagPrefix&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;%@ Register Namespace=&amp;quot;DaveSexton.Web.Controls&amp;quot; Assembly=&amp;quot;DaveSexton.AutoInputProtection&amp;quot;
             TagPrefix=&amp;quot;dsweb&amp;quot; %&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;b&gt;Figure 3: Basic control declaration&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;dsweb:AutoInputProtectionControl runat=&amp;quot;server&amp;quot; ID=&amp;quot;aip&amp;quot; /&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure4"&gt;&lt;/a&gt;&lt;b&gt;Figure 4: Configuring a default text provider and image provider&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
  &amp;lt;/configSections&amp;gt;
 
  &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;random text&amp;quot; defaultimageProvider=&amp;quot;resource&amp;quot;&amp;gt;
    &amp;lt;textProviders&amp;gt;
      &amp;lt;add name=&amp;quot;random text&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
           colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial&amp;quot;
           minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
    &amp;lt;/textProviders&amp;gt;
    &amp;lt;imageProviders&amp;gt;
      &amp;lt;add name=&amp;quot;resource&amp;quot; 
           type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionImageProvider, DaveSexton.AutoInputProtection&amp;quot;
           minimumCharacterRotation=&amp;quot;-15&amp;quot; maximumCharacterRotation=&amp;quot;15&amp;quot; /&amp;gt;
    &amp;lt;/imageProviders&amp;gt;
  &amp;lt;/autoInputProtection&amp;gt;
 
  ...
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure5"&gt;&lt;/a&gt;&lt;b&gt;Figure 5: Configuring filter providers&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;autoInputProtection&amp;gt;
  &amp;lt;filters&amp;gt;
    &amp;lt;add name=&amp;quot;horizontal bars&amp;quot; 
         type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
         colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;cross hatch&amp;quot; 
         type=&amp;quot;DaveSexton.Web.Controls.CrossHatchAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
         colors=&amp;quot;Red,Green,Blue&amp;quot; /&amp;gt;
  &amp;lt;/filters&amp;gt;
&amp;lt;/autoInputProtection&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure6"&gt;&lt;/a&gt;&lt;b&gt;Figure 6: Custom text provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using DaveSexton.Web.Controls;
 
public sealed class RandomNumbersAutoInputProtectionTextProvider : AutoInputProtectionTextProvider
{
  public override string GenerateRandomAutoInputProtectionText()
  {
    return RandomString.Create(MinimumCharacters, MaximumCharacters, 
      CharacterSets.PositiveDigits, null);
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure7"&gt;&lt;/a&gt;&lt;b&gt;Figure 7: Custom image provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using System.Drawing;
using DaveSexton.Web.Controls;
 
public sealed class WhiteBackgroundAutoInputProtectionImageProvider
  : PartitionedAutoInputProtectionImageProvider
{
  public override AutoInputProtectionImage GenerateAutoInputProtectionImage(
    string name, Size size, AutoInputProtectionTextProvider textProvider)
  {
    return GenerateImage(size, textProvider);
  }
 
  public override AutoInputProtectionImage GenerateRandomAutoInputProtectionImage(
    Size size, AutoInputProtectionTextProvider textProvider)
  {
    return GenerateImage(size, textProvider);
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;a name="Figure8"&gt;&lt;/a&gt;&lt;b&gt;Figure 8: Custom filter provider example in C#&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
using System;
using System.Drawing;
using System.Configuration.Provider;
using DaveSexton.Web.Controls;
 
public sealed class BlueOverlayAutoInputProtectionFilterProvider
  : AutoInputProtectionFilterProvider
{
  public float Opacity { get; set; }	// C# 3.0 syntax
 
  public override bool CanPreProcess
  {
    get { return false; }
  }
 
  public override bool CanPostProcess
  {
    get { return true; }
  }
 
  public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
  {
    if (config == null)
      throw new ArgumentNullException(&amp;quot;config&amp;quot;);
 
    if (string.IsNullOrEmpty(name))
      name = &amp;quot;BlueOverlayAutoInputProtectionFilterProvider&amp;quot;;
 
    if (string.IsNullOrEmpty(config[&amp;quot;description&amp;quot;]))
    {
      config.Remove(&amp;quot;description&amp;quot;);
      config.Add(&amp;quot;description&amp;quot;, &amp;quot;Blue Overlay Auto-Input Protection Filter Provider&amp;quot;);
    }
 
    base.Initialize(name, config);
 
    ProviderHelper helper = new ProviderHelper(config);
 
    Opacity = helper.ParseSingle(&amp;quot;opacity&amp;quot;, false, .15F);
 
    // Throw an exception if unrecognized attributes remain
    if (config.Count &amp;gt; 0)
    {
      string attr = config.GetKey(0);
 
      if (!string.IsNullOrEmpty(attr))
        throw new ProviderException(&amp;quot;Unrecognized attribute: &amp;quot; + attr);
    }
  }
 
  public override void PreProcess(Graphics graphics, Size imageSize)
  {
    throw new NotSupportedException();
  }
 
  public override void PostProcess(Graphics graphics, Size imageSize)
  {
    using (Brush brush = new SolidBrush(Color.FromArgb((int)(Opacity * 255), Color.Blue)))
    {
      graphics.FillRectangle(brush, 0, 0, imageSize.Width, imageSize.Height);
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:27:38 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: HowDoIFiguresBeta2 20080402122738P</guid></item><item><title>UPDATED WIKI: HowDoI</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;version=9</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
How Do I...
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 1.0 only.  The 2.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=HowDoI"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Required Setup&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#configure"&gt;configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#setup"&gt;use the AIP web control in my Visual Studio 2005 Web Site project?&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#toolbox"&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#HTML"&gt;Add the AIP web control to a web form in HTML view&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#referenceAIP"&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Additional Help&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#defaultProviders"&gt;choose the default text and bitmap providers for my website?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#filterprovider"&gt;configure my website to use an AIP filter provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createtextprovider"&gt;create a custom AIP text provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createbitmapprovider"&gt;create a custom AIP bitmap provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createfilterprovider"&gt;create a custom AIP filter provider?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;
&lt;a name="configure"&gt;&lt;/a&gt;configure my ASP.NET 2.0 website to use AIP?
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Open your &lt;b&gt;web.config&lt;/b&gt; file.  If you don't have one, create one (In Visual Studio 2005 add a new item to the project and select &lt;b&gt;Web Configuration File&lt;/b&gt; as its type).&lt;/li&gt;&lt;li&gt;Add the xml in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure1"&gt;Figure 1&lt;/a&gt; to your web.config file.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="setup"&gt;&lt;/a&gt;use the AIP web control in my Visual Studio 2005 Web Site project?
&lt;/h4&gt;You can add the AIP web control to a web form in &lt;b&gt;Design&lt;/b&gt; view using the &lt;a href="#toolbox"&gt;toolbox&lt;/a&gt;, or in &lt;b&gt;Source&lt;/b&gt; view by declaring the control in &lt;a href="#HTML"&gt;HTML&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;a name="toolbox"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio 2005 using the AIP Installer then you do not need to follow these instructions; otherwise, follow these instructions so that you can drag and drop the AIP web control from the toolbox to your web form: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open the &lt;b&gt;Toolbox&lt;/b&gt; in Visual Studio 2005.&lt;/li&gt;&lt;li&gt;Create a new tab and name it &lt;i&gt;DaveSexton.Web.Controls&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Right-mouse click the empty area under the tab and select &lt;b&gt;Choose Items...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Choose Toolbox Items&lt;/b&gt; dialog select the &lt;b&gt;.NET Framework Components&lt;/b&gt; tab and click &lt;b&gt;Browse...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;, and then open the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; and click &lt;b&gt;Open&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Make sure that three controls with names that start with &lt;i&gt;AutoInputProtection&lt;/i&gt; are added to the list and that they are checked.&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;a name="HTML"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to a web form in HTML view&lt;/b&gt;&lt;br /&gt;If you'd prefer to add the AIP web control to your web form without using a designer: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open your web form in &lt;b&gt;Source&lt;/b&gt; mode (HTML).&lt;/li&gt;&lt;li&gt;Add the declaration in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure2"&gt;Figure 2&lt;/a&gt; to your web form next to the other declarations at the top of the page.&lt;/li&gt;&lt;li&gt;Add the XHTML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure3"&gt;Figure 3&lt;/a&gt; to your web form, wherever you'd like the control to be placed.&lt;/li&gt;&lt;li&gt;If your project doesn't reference the AIP assembly then you should do that now (see the next topic).&lt;/li&gt;
&lt;/ol&gt;&lt;a name="referenceAIP"&gt;&lt;/a&gt;&lt;b&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio 2005 using the AIP Installer then dragging one of the &lt;i&gt;AutoInputProtection&lt;/i&gt; controls from the toolbox into a designer will automatically add a reference to the AIP assembly.  To add a reference manually: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;In &lt;i&gt;Solution Explorer&lt;/i&gt;, right-mouse click the project and select &lt;b&gt;Add Reference...&lt;/b&gt;&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Add Reference&lt;/b&gt; dialog, select the &lt;b&gt;Browse&lt;/b&gt; tab.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;, and then open the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; and click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="defaultProviders"&gt;&lt;/a&gt;choose the default text and bitmap providers for my website?
&lt;/h4&gt;After you have &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file, you may want to configure your website to use a different text provider or bitmap provider.&lt;br /&gt; &lt;br /&gt;To specify a default text provider and bitmap provider you must register the providers and use the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; and &lt;span class="codeInline"&gt;defaultBitmapProvider&lt;/span&gt; attributes, respectively, to assign them as the defaults.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure4"&gt;Figure 4&lt;/a&gt; for an example configuration file that registers a default text provider and a default bitmap provider.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Once the &lt;span class="codeInline"&gt;autoInputProtection&lt;/span&gt; section is added to the &lt;i&gt;web.config&lt;/i&gt; file you must specify a default text provider and a default bitmap provider or an exception will be thrown at runtime stating that a default provider is not configured.&lt;br /&gt; &lt;br /&gt;For more information about providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=HowDoI"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="filterprovider"&gt;&lt;/a&gt;configure my website to use an AIP filter provider?
&lt;/h4&gt;After you have &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file and &lt;a href="#defaultProviders"&gt;configured a default text provider and bitmap provider&lt;/a&gt;, you may want to add filters to help randomize the output.  AIP comes with one built-in filter that renders translucent bars, vertically or horizontally, over the image generated by the bitmap provider that you configured.  This particular filter is only applied &lt;i&gt;after&lt;/i&gt; the text is drawn on the bitmap.&lt;br /&gt; &lt;br /&gt;To configure a filter in your application: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Add the xml in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure5"&gt;Figure 5&lt;/a&gt; to your web.config file.&lt;/li&gt;&lt;li&gt;Configure the filter using XML attributes.  The &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute is required for the filter provider used in the example, &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=TranslucentBarsOverlayAutoInputProtectionFilterProvider&amp;amp;referringTitle=HowDoI"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;Every filter that is configured will be applied.  The order in which the filters are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; configuration element, top-down, is the order in which they will be executed at runtime.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt; for more information about filter providers.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createtextprovider"&gt;&lt;/a&gt;create a custom AIP text provider?
&lt;/h4&gt;To create a custom text provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure6"&gt;Figure 6&lt;/a&gt; shows a fully functional text provider class named, &lt;b&gt;RandomNumbersAutoInputProtectionTextProvider&lt;/b&gt;, written in C#, that will generate random numbers.&lt;br /&gt; &lt;br /&gt;For more information about text providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#text"&gt;AIP Providers, Text Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createbitmapprovider"&gt;&lt;/a&gt;create a custom AIP bitmap provider?
&lt;/h4&gt;To create a custom bitmap provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionBitmapProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure7"&gt;Figure 7&lt;/a&gt; shows a fully functional bitmap provider class named, &lt;b&gt;WhiteBackgroundAutoInputProtectionBitmapProvider&lt;/b&gt;, written in C#, that will render the background of an AIP image as solid white.&lt;br /&gt; &lt;br /&gt;For more information about bitmap providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#bitmap"&gt;AIP Providers, Bitmap Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createfilterprovider"&gt;&lt;/a&gt;create a custom AIP filter provider?
&lt;/h4&gt;To create a custom filter provider you must create a class that derives from the abstract &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.  The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#Figure8"&gt;Figure 8&lt;/a&gt; shows a fully functional, post-process filter provider class named, &lt;b&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/b&gt;, written in C#, that will render a diagonal cross hatch over the composite image.  The composite image is the background bitmap that is supplied by the configured bitmap provider with the validation text generated by the configured text provider rendered on top.&lt;br /&gt; &lt;br /&gt;To create a custom filter that processes the bitmap before the text is rendered, override the &lt;span class="codeInline"&gt;CanPreProcess&lt;/span&gt; property and return &lt;span class="codeInline"&gt;true&lt;/span&gt; in your custom filter provider class.  Then, override the &lt;span class="codeInline"&gt;PreProcess&lt;/span&gt; method and provide your implementation.&lt;br /&gt; &lt;br /&gt;For more information about filter providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=HowDoI&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:10:20 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: HowDoI 20080402121020P</guid></item><item><title>UPDATED WIKI: HowDoIBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
How Do I...
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=HowDoIBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Additional information is also available in the 2.0 Beta documentation.  Download the standalone help file or refer to the documentation that the installer adds to Visual Studio.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Required Setup&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#configure"&gt;configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#setup"&gt;use the AIP web control in my Visual Studio Web Site project?&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#toolbox"&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#HTML"&gt;Add the AIP web control to a web form in HTML view&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#referenceAIP"&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Additional Help&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#defaultProviders"&gt;choose the default text and image providers for my website?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#filterprovider"&gt;configure my website to use an AIP filter provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createtextprovider"&gt;create a custom AIP text provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createimageprovider"&gt;create a custom AIP image provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createfilterprovider"&gt;create a custom AIP filter provider?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;
&lt;a name="configure"&gt;&lt;/a&gt;configure my ASP.NET 2.0 website to use AIP?
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Open your &lt;b&gt;web.config&lt;/b&gt; file.  If you don't have one, create one by adding a new item to the project and select &lt;b&gt;Web Configuration File&lt;/b&gt; as its type.&lt;/li&gt;&lt;li&gt;Add the XML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure1"&gt;Figure 1&lt;/a&gt; to your web.config file.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="setup"&gt;&lt;/a&gt;use the AIP web control in my Visual Studio Web Site project?
&lt;/h4&gt;You can add the AIP web control to a web form in &lt;b&gt;Design&lt;/b&gt; view using the &lt;a href="#toolbox"&gt;toolbox&lt;/a&gt;, or in &lt;b&gt;Source&lt;/b&gt; view by declaring the control in &lt;a href="#HTML"&gt;HTML&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;a name="toolbox"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio using the AIP Installer then you do not need to follow these instructions; otherwise, follow these instructions so that you can drag and drop the AIP web control from the toolbox to your web form: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open the &lt;b&gt;Toolbox&lt;/b&gt; in Visual Studio.&lt;/li&gt;&lt;li&gt;Create a new tab and name it &lt;i&gt;DaveSexton.Web.Controls&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Right-mouse click the empty area under the tab and select &lt;b&gt;Choose Items...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Choose Toolbox Items&lt;/b&gt; dialog select the &lt;b&gt;.NET Framework Components&lt;/b&gt; tab and click &lt;b&gt;Browse...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; in the &lt;i&gt;bin&lt;/i&gt; folder and click &lt;b&gt;Open&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Make sure that &lt;b&gt;AutoInputProtectionControl&lt;/b&gt; is added to the list and that it is checked.&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;a name="HTML"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to a web form in HTML view&lt;/b&gt;&lt;br /&gt;If you'd prefer to add the AIP web control to your web form without using a designer: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open your web form in &lt;b&gt;Source&lt;/b&gt; mode (HTML).&lt;/li&gt;&lt;li&gt;Add the declaration in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure2"&gt;Figure 2&lt;/a&gt; to your web form next to the other declarations at the top of the page.&lt;/li&gt;&lt;li&gt;Add the XHTML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure3"&gt;Figure 3&lt;/a&gt; to your web form, wherever you'd like the control to be placed.&lt;/li&gt;&lt;li&gt;If your project doesn't reference the AIP assembly then you should do that now (see the next topic).&lt;/li&gt;
&lt;/ol&gt;&lt;a name="referenceAIP"&gt;&lt;/a&gt;&lt;b&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio using the AIP Installer then dragging &lt;i&gt;AutoInputProtectionControl&lt;/i&gt; from the toolbox into a designer will automatically add a reference to the AIP assembly.  To add a reference manually: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;In &lt;i&gt;Solution Explorer&lt;/i&gt;, right-mouse click the project and select &lt;b&gt;Add Reference...&lt;/b&gt;&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Add Reference&lt;/b&gt; dialog, select the &lt;b&gt;Browse&lt;/b&gt; tab.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; in the &lt;i&gt;bin&lt;/i&gt; folder and click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="defaultProviders"&gt;&lt;/a&gt;choose the default text and image providers for my website?
&lt;/h4&gt;After you have &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file, you may want to configure your website to use a different text provider or image provider.&lt;br /&gt; &lt;br /&gt;To specify a default text provider or image provider you must register them and use the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; and &lt;span class="codeInline"&gt;defaultImageProvider&lt;/span&gt; attributes, respectively, to assign them as the defaults.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure4"&gt;Figure 4&lt;/a&gt; for an example configuration file that registers a default text provider and a default image provider.&lt;br /&gt; &lt;br /&gt;For more information about providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="filterprovider"&gt;&lt;/a&gt;configure my website to use an AIP filter provider?
&lt;/h4&gt;After you have at least &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file, you may want to add filters to help randomize the output.&lt;br /&gt; &lt;br /&gt;AIP has one built-in filter that renders translucent bars, vertically or horizontally.  This particular filter is only applied &lt;i&gt;after&lt;/i&gt; the text is drawn on the image.&lt;br /&gt; &lt;br /&gt;Another built-in filter provider renders a random cross hatch style.  This filter is also applied &lt;i&gt;after&lt;/i&gt; the text is rendered.&lt;br /&gt; &lt;br /&gt;To configure a filter in your application: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Add the XML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure5"&gt;Figure 5&lt;/a&gt; to your web.config file.&lt;/li&gt;&lt;li&gt;Configure the filter using XML attributes.  The &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute is required for the filter providers used in the example.&lt;/li&gt;
&lt;/ol&gt;Every filter that is configured will be applied.  The order in which the filters are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; configuration element is the order in which they will be executed at runtime, top-down.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt; for more information about filter providers.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createtextprovider"&gt;&lt;/a&gt;create a custom AIP text provider?
&lt;/h4&gt;To create a custom text provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure6"&gt;Figure 6&lt;/a&gt; shows a fully functional text provider class named, &lt;b&gt;RandomNumbersAutoInputProtectionTextProvider&lt;/b&gt;, written in C#, that will generate random numbers.&lt;br /&gt; &lt;br /&gt;For more information about text providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#text"&gt;AIP Providers, Text Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createimageprovider"&gt;&lt;/a&gt;create a custom AIP image provider?
&lt;/h4&gt;To create a custom image provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionImageProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure7"&gt;Figure 7&lt;/a&gt; shows a fully functional image provider class named, &lt;b&gt;WhiteBackgroundAutoInputProtectionImageProvider&lt;/b&gt;, written in C#, that will render the background of an AIP image as solid white.&lt;br /&gt; &lt;br /&gt;For more information about image providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#image"&gt;AIP Providers, Image Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createfilterprovider"&gt;&lt;/a&gt;create a custom AIP filter provider?
&lt;/h4&gt;To create a custom filter provider you must create a class that derives from the abstract &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure8"&gt;Figure 8&lt;/a&gt; shows a fully functional, post-process filter provider class named, &lt;b&gt;BlueOverlayAutoInputProtectionFilterProvider&lt;/b&gt;, written in C#, that will render a translucent blue screen over the composite image.  The composite image is the background image that is supplied by the configured image provider with the validation text generated by the configured text provider rendered on top.&lt;br /&gt; &lt;br /&gt;To create a custom filter that processes the image &lt;i&gt;before&lt;/i&gt; the text is rendered, override the &lt;span class="codeInline"&gt;CanPreProcess&lt;/span&gt; property and return &lt;span class="codeInline"&gt;true&lt;/span&gt; in your custom filter provider class.  Then, override the &lt;span class="codeInline"&gt;PreProcess&lt;/span&gt; method and provide your implementation.&lt;br /&gt; &lt;br /&gt;For more information about filter providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:09:46 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: HowDoIBeta2 20080402120946P</guid></item><item><title>UPDATED WIKI: HowDoIBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
How Do I...
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=How%20Do%20I...&amp;amp;referringTitle=HowDoIBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Additional information is also available in the 2.0 Beta documentation.  Download the standalone help file or refer to the documentation that the installer adds to Visual Studio.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Required Setup&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#configure"&gt;configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#setup"&gt;use the AIP web control in my Visual Studio Web Site project?&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#toolbox"&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#HTML"&gt;Add the AIP web control to a web form in HTML view&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#referenceAIP"&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Additional Help&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#defaultProviders"&gt;choose the default text and image providers for my website?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#filterprovider"&gt;configure my website to use an AIP filter provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createtextprovider"&gt;create a custom AIP text provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createimageprovider"&gt;create a custom AIP image provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createfilterprovider"&gt;create a custom AIP filter provider?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;
&lt;a name="configure"&gt;&lt;/a&gt;configure my ASP.NET 2.0 website to use AIP?
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Open your &lt;b&gt;web.config&lt;/b&gt; file.  If you don't have one, create one by adding a new item to the project and select &lt;b&gt;Web Configuration File&lt;/b&gt; as its type.&lt;/li&gt;&lt;li&gt;Add the XML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure1"&gt;Figure 1&lt;/a&gt; to your web.config file.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="setup"&gt;&lt;/a&gt;use the AIP web control in my Visual Studio Web Site project?
&lt;/h4&gt;You can add the AIP web control to a web form in &lt;b&gt;Design&lt;/b&gt; view using the &lt;a href="#toolbox"&gt;toolbox&lt;/a&gt;, or in &lt;b&gt;Source&lt;/b&gt; view by declaring the control in &lt;a href="#HTML"&gt;HTML&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;a name="toolbox"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio using the AIP Installer then you do not need to follow these instructions; otherwise, follow these instructions so that you can drag and drop the AIP web control from the toolbox to your web form: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open the &lt;b&gt;Toolbox&lt;/b&gt; in Visual Studio.&lt;/li&gt;&lt;li&gt;Create a new tab and name it &lt;i&gt;DaveSexton.Web.Controls&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Right-mouse click the empty area under the tab and select &lt;b&gt;Choose Items...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Choose Toolbox Items&lt;/b&gt; dialog select the &lt;b&gt;.NET Framework Components&lt;/b&gt; tab and click &lt;b&gt;Browse...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; in the &lt;i&gt;bin&lt;/i&gt; folder and click &lt;b&gt;Open&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Make sure that &lt;b&gt;AutoInputProtectionControl&lt;/b&gt; is added to the list and that it is checked.&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;a name="HTML"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to a web form in HTML view&lt;/b&gt;&lt;br /&gt;If you'd prefer to add the AIP web control to your web form without using a designer: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open your web form in &lt;b&gt;Source&lt;/b&gt; mode (HTML).&lt;/li&gt;&lt;li&gt;Add the declaration in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure2"&gt;Figure 2&lt;/a&gt; to your web form next to the other declarations at the top of the page.&lt;/li&gt;&lt;li&gt;Add the XHTML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure3"&gt;Figure 3&lt;/a&gt; to your web form, wherever you'd like the control to be placed.&lt;/li&gt;&lt;li&gt;If your project doesn't reference the AIP assembly then you should do that now (see the next topic).&lt;/li&gt;
&lt;/ol&gt;&lt;a name="referenceAIP"&gt;&lt;/a&gt;&lt;b&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio using the AIP Installer then dragging &lt;i&gt;AutoInputProtectionControl&lt;/i&gt; from the toolbox into a designer will automatically add a reference to the AIP assembly.  To add a reference manually: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;In &lt;i&gt;Solution Explorer&lt;/i&gt;, right-mouse click the project and select &lt;b&gt;Add Reference...&lt;/b&gt;&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Add Reference&lt;/b&gt; dialog, select the &lt;b&gt;Browse&lt;/b&gt; tab.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; in the &lt;i&gt;bin&lt;/i&gt; folder and click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="defaultProviders"&gt;&lt;/a&gt;choose the default text and image providers for my website?
&lt;/h4&gt;After you have &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file, you may want to configure your website to use a different text provider or image provider.&lt;br /&gt; &lt;br /&gt;To specify a default text provider or image provider you must register them and use the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; and &lt;span class="codeInline"&gt;defaultImageProvider&lt;/span&gt; attributes, respectively, to assign them as the defaults.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure4"&gt;Figure 4&lt;/a&gt; for an example configuration file that registers a default text provider and a default image provider.&lt;br /&gt; &lt;br /&gt;For more information about providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="filterprovider"&gt;&lt;/a&gt;configure my website to use an AIP filter provider?
&lt;/h4&gt;After you have at least &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file, you may want to add filters to help randomize the output.&lt;br /&gt; &lt;br /&gt;AIP has one built-in filter that renders translucent bars, vertically or horizontally.  This particular filter is only applied &lt;i&gt;after&lt;/i&gt; the text is drawn on the image.&lt;br /&gt; &lt;br /&gt;Another built-in filter provider renders a random cross hatch style.  This filter is also applied &lt;i&gt;after&lt;/i&gt; the text is rendered.&lt;br /&gt; &lt;br /&gt;To configure a filter in your application: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Add the XML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure5"&gt;Figure 5&lt;/a&gt; to your web.config file.&lt;/li&gt;&lt;li&gt;Configure the filter using XML attributes.  The &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute is required for the filter providers used in the example.&lt;/li&gt;
&lt;/ol&gt;Every filter that is configured will be applied.  The order in which the filters are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; configuration element is the order in which they will be executed at runtime, top-down.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt; for more information about filter providers.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createtextprovider"&gt;&lt;/a&gt;create a custom AIP text provider?
&lt;/h4&gt;To create a custom text provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure6"&gt;Figure 6&lt;/a&gt; shows a fully functional text provider class named, &lt;b&gt;RandomNumbersAutoInputProtectionTextProvider&lt;/b&gt;, written in C#, that will generate random numbers.&lt;br /&gt; &lt;br /&gt;For more information about text providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#text"&gt;AIP Providers, Text Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createimageprovider"&gt;&lt;/a&gt;create a custom AIP image provider?
&lt;/h4&gt;To create a custom image provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionImageProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure7"&gt;Figure 7&lt;/a&gt; shows a fully functional image provider class named, &lt;b&gt;WhiteBackgroundAutoInputProtectionImageProvider&lt;/b&gt;, written in C#, that will render the background of an AIP image as solid white.&lt;br /&gt; &lt;br /&gt;For more information about image providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#image"&gt;AIP Providers, Image Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createfilterprovider"&gt;&lt;/a&gt;create a custom AIP filter provider?
&lt;/h4&gt;To create a custom filter provider you must create a class that derives from the abstract &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure8"&gt;Figure 8&lt;/a&gt; shows a fully functional, post-process filter provider class named, &lt;b&gt;BlueOverlayAutoInputProtectionFilterProvider&lt;/b&gt;, written in C#, that will render a translucent blue screen over the composite image.  The composite image is the background image that is supplied by the configured image provider with the validation text generated by the configured text provider rendered on top.&lt;br /&gt; &lt;br /&gt;To create a custom filter that processes the image &lt;i&gt;before&lt;/i&gt; the text is rendered, override the &lt;span class="codeInline"&gt;CanPreProcess&lt;/span&gt; property and return &lt;span class="codeInline"&gt;true&lt;/span&gt; in your custom filter provider class.  Then, override the &lt;span class="codeInline"&gt;PreProcess&lt;/span&gt; method and provide your implementation.&lt;br /&gt; &lt;br /&gt;For more information about filter providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:09:07 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: HowDoIBeta2 20080402120907P</guid></item><item><title>UPDATED WIKI: HowDoIBeta2</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
How Do I...
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;This documentation applies to 2.0 Beta only.  The 1.0 documentation is &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI...&amp;amp;referringTitle=HowDoIBeta2"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Additional information is also available in the 2.0 Beta documentation.  Download the standalone help file or refer to the documentation that the installer adds to Visual Studio.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Required Setup&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#configure"&gt;configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#setup"&gt;use the AIP web control in my Visual Studio Web Site project?&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#toolbox"&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#HTML"&gt;Add the AIP web control to a web form in HTML view&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#referenceAIP"&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Additional Help&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#defaultProviders"&gt;choose the default text and image providers for my website?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#filterprovider"&gt;configure my website to use an AIP filter provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createtextprovider"&gt;create a custom AIP text provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createimageprovider"&gt;create a custom AIP image provider?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#createfilterprovider"&gt;create a custom AIP filter provider?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;
&lt;a name="configure"&gt;&lt;/a&gt;configure my ASP.NET 2.0 website to use AIP?
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Open your &lt;b&gt;web.config&lt;/b&gt; file.  If you don't have one, create one by adding a new item to the project and select &lt;b&gt;Web Configuration File&lt;/b&gt; as its type.&lt;/li&gt;&lt;li&gt;Add the XML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure1"&gt;Figure 1&lt;/a&gt; to your web.config file.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="setup"&gt;&lt;/a&gt;use the AIP web control in my Visual Studio Web Site project?
&lt;/h4&gt;You can add the AIP web control to a web form in &lt;b&gt;Design&lt;/b&gt; view using the &lt;a href="#toolbox"&gt;toolbox&lt;/a&gt;, or in &lt;b&gt;Source&lt;/b&gt; view by declaring the control in &lt;a href="#HTML"&gt;HTML&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;a name="toolbox"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to Visual Studio's Toolbox&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio using the AIP Installer then you do not need to follow these instructions; otherwise, follow these instructions so that you can drag and drop the AIP web control from the toolbox to your web form: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open the &lt;b&gt;Toolbox&lt;/b&gt; in Visual Studio.&lt;/li&gt;&lt;li&gt;Create a new tab and name it &lt;i&gt;DaveSexton.Web.Controls&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Right-mouse click the empty area under the tab and select &lt;b&gt;Choose Items...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Choose Toolbox Items&lt;/b&gt; dialog select the &lt;b&gt;.NET Framework Components&lt;/b&gt; tab and click &lt;b&gt;Browse...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; in the &lt;i&gt;bin&lt;/i&gt; folder and click &lt;b&gt;Open&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Make sure that &lt;b&gt;AutoInputProtectionControl&lt;/b&gt; is added to the list and that it is checked.&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;a name="HTML"&gt;&lt;/a&gt;&lt;b&gt;Add the AIP web control to a web form in HTML view&lt;/b&gt;&lt;br /&gt;If you'd prefer to add the AIP web control to your web form without using a designer: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Open your web form in &lt;b&gt;Source&lt;/b&gt; mode (HTML).&lt;/li&gt;&lt;li&gt;Add the declaration in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure2"&gt;Figure 2&lt;/a&gt; to your web form next to the other declarations at the top of the page.&lt;/li&gt;&lt;li&gt;Add the XHTML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure3"&gt;Figure 3&lt;/a&gt; to your web form, wherever you'd like the control to be placed.&lt;/li&gt;&lt;li&gt;If your project doesn't reference the AIP assembly then you should do that now (see the next topic).&lt;/li&gt;
&lt;/ol&gt;&lt;a name="referenceAIP"&gt;&lt;/a&gt;&lt;b&gt;Reference the DaveSexton.AutoInputProtection assembly&lt;/b&gt;&lt;br /&gt;If you have successfully installed the AIP web control into Visual Studio using the AIP Installer then dragging &lt;i&gt;AutoInputProtectionControl&lt;/i&gt; from the toolbox into a designer will automatically add a reference to the AIP assembly.  To add a reference manually: &lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;In &lt;i&gt;Solution Explorer&lt;/i&gt;, right-mouse click the project and select &lt;b&gt;Add Reference...&lt;/b&gt;&lt;/li&gt;&lt;li&gt;In the &lt;b&gt;Add Reference&lt;/b&gt; dialog, select the &lt;b&gt;Browse&lt;/b&gt; tab.&lt;/li&gt;&lt;li&gt;Browse to the AIP installation directory, commonly found at &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;DaveSexton.AutoInputProtection.dll&lt;/b&gt; in the &lt;i&gt;bin&lt;/i&gt; folder and click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="defaultProviders"&gt;&lt;/a&gt;choose the default text and image providers for my website?
&lt;/h4&gt;After you have &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file, you may want to configure your website to use a different text provider or image provider.&lt;br /&gt; &lt;br /&gt;To specify a default text provider or image provider you must register them and use the &lt;span class="codeInline"&gt;defaultTextProvider&lt;/span&gt; and &lt;span class="codeInline"&gt;defaultImageProvider&lt;/span&gt; attributes, respectively, to assign them as the defaults.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure4"&gt;Figure 4&lt;/a&gt; for an example configuration file that registers a default text provider and a default image provider.&lt;br /&gt; &lt;br /&gt;For more information about providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="filterprovider"&gt;&lt;/a&gt;configure my website to use an AIP filter provider?
&lt;/h4&gt;After you have at least &lt;a href="#configure"&gt;added the basic AIP configuration elements&lt;/a&gt; to your &lt;i&gt;web.config&lt;/i&gt; file, you may want to add filters to help randomize the output.&lt;br /&gt; &lt;br /&gt;AIP has one built-in filter that renders translucent bars, vertically or horizontally.  This particular filter is only applied &lt;i&gt;after&lt;/i&gt; the text is drawn on the image.&lt;br /&gt; &lt;br /&gt;Another built-in filter provider renders a random cross hatch style.  This filter is also applied &lt;i&gt;after&lt;/i&gt; the text is rendered.&lt;br /&gt; &lt;br /&gt;To configure a filter in your application: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Add the XML in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure5"&gt;Figure 5&lt;/a&gt; to your web.config file.&lt;/li&gt;&lt;li&gt;Configure the filter using XML attributes.  The &lt;span class="codeInline"&gt;colors&lt;/span&gt; attribute is required for the filter providers used in the example.&lt;/li&gt;
&lt;/ol&gt;Every filter that is configured will be applied.  The order in which the filters are added to the &lt;span class="codeInline"&gt;filters&lt;/span&gt; configuration element is the order in which they will be executed at runtime, top-down.&lt;br /&gt; &lt;br /&gt;See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt; for more information about filter providers.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createtextprovider"&gt;&lt;/a&gt;create a custom AIP text provider?
&lt;/h4&gt;To create a custom text provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionTextProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure6"&gt;Figure 6&lt;/a&gt; shows a fully functional text provider class named, &lt;b&gt;RandomNumbersAutoInputProtectionTextProvider&lt;/b&gt;, written in C#, that will generate random numbers.&lt;br /&gt; &lt;br /&gt;For more information about text providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#text"&gt;AIP Providers, Text Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createimageprovider"&gt;&lt;/a&gt;create a custom AIP image provider?
&lt;/h4&gt;To create a custom image provider you must create a class that derives from the &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionImageProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure7"&gt;Figure 7&lt;/a&gt; shows a fully functional image provider class named, &lt;b&gt;WhiteBackgroundAutoInputProtectionImageProvider&lt;/b&gt;, written in C#, that will render the background of an AIP image as solid white.&lt;br /&gt; &lt;br /&gt;For more information about image providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#image"&gt;AIP Providers, Image Providers&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;
&lt;a name="createfilterprovider"&gt;&lt;/a&gt;create a custom AIP filter provider?
&lt;/h4&gt;To create a custom filter provider you must create a class that derives from the abstract &lt;span class="codeInline"&gt;DaveSexton.Web.Controls.Configuration.AutoInputProtectionFilterProvider&lt;/span&gt; class, directly or indirectly.&lt;br /&gt; &lt;br /&gt;The example in &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#Figure8"&gt;Figure 8&lt;/a&gt; shows a fully functional, post-process filter provider class named, &lt;b&gt;BlueOverlayAutoInputProtectionFilterProvider&lt;/b&gt;, written in C#, that will render a translucent blue screen over the composite image.  The composite image is the background image that is supplied by the configured image provider with the validation text generated by the configured text provider rendered on top.&lt;br /&gt; &lt;br /&gt;To create a custom filter that processes the image &lt;i&gt;before&lt;/i&gt; the text is rendered, override the &lt;span class="codeInline"&gt;CanPreProcess&lt;/span&gt; property and return &lt;span class="codeInline"&gt;true&lt;/span&gt; in your custom filter provider class.  Then, override the &lt;span class="codeInline"&gt;PreProcess&lt;/span&gt; method and provide your implementation.&lt;br /&gt; &lt;br /&gt;For more information about filter providers see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=HowDoIBeta2&amp;amp;ANCHOR#filter"&gt;AIP Providers, Filter Providers&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 12:06:28 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: HowDoIBeta2 20080402120628P</guid></item><item><title>UPDATED WIKI: Wikimap</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=Wikimap&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Wikimap
&lt;/h2&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;A standalone compiled help file is available for 2.0 Beta.  Also, the 2.0 Beta installer adds documentation into Visual Studio 2005 and 2008.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=Home&amp;amp;referringTitle=Wikimap"&gt;Home Page&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Wikimap"&gt;2.0 Beta Release Notes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Please read this document carefully before attempting to install AIP 2.0 Beta.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RTW1&amp;amp;referringTitle=Wikimap"&gt;1.0 Release Notes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Please read this document carefully before attempting to install AIP 1.0.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Wikimap"&gt;How Do I...&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIBeta2&amp;amp;referringTitle=Wikimap"&gt;How Do I... (2.0 Beta)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Guidance for performing some common tasks associated with AIP.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFigures&amp;amp;referringTitle=Wikimap"&gt;How Do I... Figures&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoIFiguresBeta2&amp;amp;referringTitle=Wikimap"&gt;How Do I... Figures (2.0 Beta)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;XML and code samples referenced by the &lt;b&gt;How Do I...&lt;/b&gt; wiki.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=Wikimap"&gt;AIP Providers&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProvidersBeta2&amp;amp;referringTitle=Wikimap"&gt;AIP 2.0 Beta Providers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;General information about AIP text, bitmap (image in 2.0) and filter providers, and the implementations built-in to the AIP library.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; The following documenation applies to 1.0 only.  Refer to the 2.0 Beta documentation for information about providers in 2.0.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Text Providers&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=BasicEnglishAutoInputProtectionTextProvider&amp;amp;referringTitle=Wikimap"&gt;BasicEnglishAutoInputProtectionTextProvider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RandomCharactersAutoInputProtectionTextProvider&amp;amp;referringTitle=Wikimap"&gt;RandomCharactersAutoInputProtectionTextProvider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Bitmap Providers&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=PartitionedAutoInputProtectionBitmapProvider&amp;amp;referringTitle=Wikimap"&gt;PartitionedAutoInputProtectionBitmapProvider&lt;/a&gt; (abstract)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=ResourceAutoInputProtectionBitmapProvider&amp;amp;referringTitle=Wikimap"&gt;ResourceAutoInputProtectionBitmapProvider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LineNoiseAutoInputProtectionBitmapProvider&amp;amp;referringTitle=Wikimap"&gt;LineNoiseAutoInputProtectionBitmapProvider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Filter Providers&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=TranslucentBarsOverlayAutoInputProtectionFilterProvider&amp;amp;referringTitle=Wikimap"&gt;TranslucentBarsOverlayAutoInputProtectionFilterProvider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 11:42:45 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Wikimap 20080402114245A</guid></item><item><title>UPDATED WIKI: RTW1</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=RTW1&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
AIP 1.0.0 RTW Release Notes
&lt;/h2&gt;&lt;b&gt;Important:&lt;/b&gt; &lt;i&gt;These release notes do not apply to 2.0 Beta.  See &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=RTW1"&gt;this page&lt;/a&gt; instead.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Release/ProjectReleases.aspx?ReleaseId=3114"&gt;1.0.0 Production&lt;/a&gt; will install the AIP library, ready-to-use, and the complete source code, which consists of a Visual Studio 2005 project, content and code files.  The installer also provides the option to have the AIP web controls installed into Visual Studio 2005 automatically so they appear in the toolbox.&lt;br /&gt; &lt;br /&gt;&lt;a href="#Instructions"&gt;Installation Instructions&lt;/a&gt; | &lt;a href="#Issues"&gt;Known Issues&lt;/a&gt; | &lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="Instructions"&gt;&lt;/a&gt;Installation Instructions
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Download the AIP Installer.&lt;/li&gt;&lt;li&gt;Close all running instances of Visual Studio 2005 on your computer.&lt;/li&gt;&lt;li&gt;Run the AIP Installer.  (Vista users see below for specific instructions).&lt;/li&gt;&lt;li&gt;Complete the installation wizard.&lt;/li&gt;
&lt;/ol&gt;&lt;b&gt;Control Registration in Visual Studio 2005&lt;/b&gt;&lt;br /&gt;To have the installer register the AIP web controls with Visual Studio 2005, select &lt;b&gt;Yes&lt;/b&gt; on the &lt;i&gt;Control Registration&lt;/i&gt; step.  The next wizard step will then ask you to enter the location of the Visual Studio 2005 custom controls folder.  The default value will be correct in most cases: &lt;i&gt;My Documents\Visual Studio 2005\Controls&lt;/i&gt;.  If the folder doesn't exist it will be created.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Important Notes Relating to Control Registration:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;See &lt;a href="#Issues"&gt;Known Issues&lt;/a&gt; for important information about toolbox registration before installing AIP.&lt;/li&gt;&lt;li&gt;The path that is specified in the wizard is the root controls folder.  Don't specify a folder for a custom tab because one will automatically be created by the installer: &lt;i&gt;DaveSexton.Web.Controls&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Visual Studio may briefly open and close after the installation, or uninstallation, has completed.  This behavior is to be expected.  After the temporary instance has closed you may open another instance for use.  This behavior occurs as a result of the AIP Installer running the &lt;span class="codeInline"&gt;Tools.InstallCommunityControls&lt;/span&gt; command to install the AIP web controls into the Visual Studio 2005 toolbox.&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Vista Users&lt;/b&gt;&lt;br /&gt;The installer must run with administrative privileges.  With UAC enabled, follow these steps to start the installation instead of double-clicking the installation package (.msi): &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Locate &lt;b&gt;Start&lt;/b&gt; &amp;gt; &lt;b&gt;All Programs&lt;/b&gt; &amp;gt; &lt;b&gt;Accessories&lt;/b&gt; &amp;gt; &lt;b&gt;Command Prompt&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Right-mouse click and select &lt;b&gt;Run as administrator&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Change the current directory to the location of the AIP Installer file.  For example, &lt;span class="codeInline"&gt;cd c:\users\dave\desktop&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Run the installer from the command prompt: &lt;span class="codeInline"&gt;msiexec /i AIP.msi&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;
&lt;a name="Issues"&gt;&lt;/a&gt;Known Issues
&lt;/h4&gt;The AIP installer provides the option to automatically install the AIP web control in your Visual Studio 2005 toolbox; however, there are some known issues with the Visual Studio command used by the AIP installer that may prevent the control from being installed.  Regardless, the library itself will be installed on your system so you can manually include the controls in your toolbox if you want.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Problem 1&lt;/b&gt;&lt;br /&gt;If you have installed Sql Server 2005 (any version including CTPs) after installing Visual Studio 2005 then you may have to perform some manual patching before using this installer, but only if you plan on having it install the AIP web control into Visual Studio 2005 for you.&lt;br /&gt; &lt;br /&gt;Follow these instructions before running the AIP installer: &lt;br /&gt; &lt;br /&gt;Failure to install Toolbox controls via ContentInstaller or Tools.InstallCommunityControls&lt;br /&gt;&lt;a href="http://blogs.msdn.com/chetanc/archive/2005/11/16/493495.aspx" class="externalLink"&gt;http://blogs.msdn.com/chetanc/archive/2005/11/16/493495.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Problem 2&lt;/b&gt;&lt;br /&gt;If you still receive an error after making the appropriate registry changes and executing &lt;span class="codeInline"&gt; devenv /setup &lt;/span&gt;, or if you haven't installed Sql Server 2005 but you are getting an error anyway such as a Package Load Failure, then you may have to make a different registry modification.&lt;br /&gt; &lt;br /&gt;You can try to delete invalid values under the following registry key and attempt the installation again: &lt;br /&gt; &lt;br /&gt;&lt;span class="codeInline"&gt; HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\UserToolBoxControls &lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Each value in the key above corresponds to a custom toolbox tab in Visual Studio.  Visual Studio seems to require that the list only contain tabs that correspond to existing folders in the &lt;span class="codeInline"&gt; My Documents\Visual Studio 2005\Controls &lt;/span&gt; directory.  Values that do not correspond to an existing folder must be removed.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;More Information&lt;/b&gt;&lt;br /&gt;The solutions above were discovered in the following thread and were tested on Windows Vista Business Edition for reliability, but please be aware that your own system configurations may affect whether these solutions are viable options for you: &lt;br /&gt; &lt;br /&gt;Error Executing VSI File with Toolbox Controls&lt;br /&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=133336&amp;amp;SiteID=1" class="externalLink"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=133336&amp;amp;SiteID=1&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
&lt;a name="SourceCode"&gt;&lt;/a&gt;Source Code
&lt;/h4&gt;To use the Visual Studio 2005 project file: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Browse to the AIP installation folder in &lt;i&gt;Windows Explorer&lt;/i&gt; (commonly, &lt;i&gt;C:\Program Files\Dave Sexton\AIP&lt;/i&gt;).&lt;/li&gt;&lt;li&gt;Copy the entire contents of the &lt;b&gt;Source&lt;/b&gt; directory to another location; for instance, &lt;i&gt;My Documents\Visual Studio 2005\Projects\DaveSexton.AutoInputProtection\&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Double-click the &lt;b&gt;DaveSexton.AutoInputProtection.csproj&lt;/b&gt; file to open the project in Visual Studio.&lt;/li&gt;&lt;li&gt;When warned about missing source control click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;When prompted, select &lt;b&gt;Permanently remove source control association bindings&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;In the &lt;i&gt;Solution Explorer&lt;/i&gt; locate and delete the file named, &lt;b&gt;davesexton.pfx&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Open the project's properties.  For example, double-click the &lt;b&gt;Properties&lt;/b&gt; folder in &lt;i&gt;Solution Explorer&lt;/i&gt; or right-mouse click the project node and select &lt;b&gt;Properties&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Select the &lt;b&gt;Signing&lt;/b&gt; tab.&lt;/li&gt;&lt;li&gt;Uncheck &lt;b&gt;Sign the assembly&lt;/b&gt; or, preferably, select &lt;b&gt;&amp;lt;New...&amp;gt;&lt;/b&gt; from the drop-down list instead to use your own signature.&lt;/li&gt;&lt;li&gt;Save and try to build the project.  There should be no Errors, Warnings or Messages in the &lt;b&gt;Error List&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 11:31:55 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: RTW1 20080402113155A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=Home&amp;version=29</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="#Examples"&gt;Examples&lt;/a&gt; | &lt;a href="#Features"&gt;Features&lt;/a&gt; | &lt;a href="#require"&gt;Requirements&lt;/a&gt; | &lt;a href="#project"&gt;Project&lt;/a&gt; | &lt;a href="#usage"&gt;Usage&lt;/a&gt; | &lt;a href="#appearance"&gt;Appearance&lt;/a&gt; | &lt;a href="#config"&gt;Configuration&lt;/a&gt; | &lt;a href="#spam"&gt;About Spam&lt;/a&gt; | &lt;a href="#resources"&gt;External Resources&lt;/a&gt; | &lt;a href="#help"&gt;Help and Feedback&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=Wikimap&amp;amp;referringTitle=Home"&gt;&amp;lt;Wikimap&amp;gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RTW1&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 1.0 RTW&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 2.0 Beta&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;AIP is an extensible ASP.NET web control that provides CAPTCHA protection for your blogs, forums, wikis and websites, greatly reducing the likelihood of unwanted form submission from automated spam and hacks.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP 2.0 Beta works with Visual Studio 2005, 2008, and Visual Web Developer Express&lt;/b&gt;.  The AIP web control provides design-time support in Visual Studio 2005 and 2008.  The installer automatically adds the control to the toolbox and merges the AIP documentation into Visual Studio's help.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP works with minimal configuration&lt;/b&gt;.  Only an HTTP request handler must be added to your web.config file and you'll be able to use the control on all of your web pages that require protection.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP uses a server-side event&lt;/b&gt; of a custom validator control to test user input so that if user validation fails, &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP is fully extensible&lt;/b&gt;.  You can define a custom layout template for the control and configure built-in text, image and filter providers to produce random CAPTCHAs in various formats.  You can also create custom providers that generate randomized text, images and filters.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Examples"&gt;&lt;/a&gt;Examples
&lt;/h3&gt;The following example uses the AIP web control with its default template and default text and image providers (basic English and line noise, respectively).&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=11028" alt="Example-Default.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The next example uses a custom data-bound template and various built-in providers.&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=8979" alt="Example-Blog.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The final example illustrates a random CAPTCHA that has been generated using built-in text and filter providers, and a custom image provider.  (Note that a randomized cross hatch filter provider is now built-in as of 2.0 Beta.)&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9479" alt="Example-CrossHatch2.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Features"&gt;&lt;/a&gt;Features
&lt;/h3&gt;The AIP Web Control&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;works out-of-the-box with minimal configuration; only the Http Handler must be configured.&lt;/li&gt;&lt;li&gt;2.0 Beta can be configured to use the ASP.NET cache or session state (useful for web farms).  The web control also works with view state disabled.&lt;/li&gt;&lt;li&gt;can be used on web form and user control designers in Visual Studio.&lt;/li&gt;&lt;li&gt;can be edited in template-mode with two placeholder controls; one that provides the location of the CAPTCHA image and another provides the validation textbox.  Literal content and server controls are supported in the template for complete control over its appearance.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; 2.0 Beta no longer requires placeholder controls in custom templates.  Instead, you must add an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;uses ASP.NET validation controls.  Check &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; upon post-back to determine whether validation succeeded.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;You can specify custom error messages for a validation summary.  2.0 Beta also provides properties to set in-line error messages.&lt;/li&gt;&lt;li&gt;The control in 2.0 Beta exposes a &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; property that will automatically set the &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; properties of the validator controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;The CAPTCHA text&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;can be generated with a custom algorithm.&lt;/li&gt;&lt;li&gt;can be random, basic English words from the Ogden dictionary, which is built-in to the AIP library.&lt;/li&gt;&lt;li&gt;can be characters chosen at random from a configurable character set that includes any combination of upper-case and lower-case letters, the number zero, positive digits and pre-defined symbols.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;The default list of characters that are excluded can be modified.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;can be case-sensitive for validation.&lt;/li&gt;&lt;li&gt;has a random length that is configurable with maximum and minimum values.&lt;/li&gt;&lt;li&gt;has a customizable appearance, providing control over the list of sampled colors and fonts, the size range of characters, and provider-specific attributes that are all configured in the web.config file.&lt;/li&gt;
&lt;/ul&gt;The AIP library&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;produces random output that can easily be configured to vary greatly in appearance between sites.&lt;/li&gt;&lt;li&gt;is extensible, using custom ASP.NET 2.0 providers to generate the CAPTCHA text and image, and to apply graphical filters.&lt;/li&gt;&lt;li&gt;has a text provider that chooses words from the Ogden dictionary.&lt;/li&gt;&lt;li&gt;has a text provider that chooses random characters.&lt;/li&gt;&lt;li&gt;has a base bitmap provider that creates a bitmap with text rendered in evenly spaced vertical partitions.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders line-noise with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders 1 of 5 random background images with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a filter provider that can render randomized translucent bars, vertically or horizontally, as an overlay.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
&lt;a name="require"&gt;&lt;/a&gt;Requirements
&lt;/h3&gt;AIP only requires ASP.NET 2.0.&lt;br /&gt; &lt;br /&gt;Install the Microsoft .NET Framework 2.0, 3.0 or 3.5 to use AIP in your web sites.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="project"&gt;&lt;/a&gt;Project
&lt;/h3&gt;The AIP project was written, and will continue to be written, exclusively in C#.&lt;br /&gt; &lt;br /&gt;AIP 2.0 Beta was built with C# 3.0 and Visual Studio 2008, but the compiled assembly targets the Microsoft .NET Framework 2.0.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Plans&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Globalization&lt;/li&gt;&lt;li&gt;Community participation in the development of new image filters for CAPTCHA algorithms&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Team&lt;/b&gt;&lt;br /&gt;If you'd like to become a team member, please contact &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  As indicated above, anyone that can implement image filters in C# for different/better CAPTCHA algorithms would make a great addition to the team.  Please mention some of your qualifications and your motivation for becoming a team member in your email.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="usage"&gt;&lt;/a&gt;Usage
&lt;/h3&gt;Add the AIP web control to your web forms and an image containing random text will be generated automatically, unique to each request.  Users must enter the text that they see into a textbox before submitting the form.  If a user enters invalid text then &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false on post-back.  You can use &lt;span class="codeInline"&gt;ValidationSummary&lt;/span&gt; controls to display errors or set in-line error message properties on the AIP web control.&lt;br /&gt; &lt;br /&gt;For more information please refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="appearance"&gt;&lt;/a&gt;Appearance
&lt;/h3&gt;The appearance of the AIP web control may be customized in a designer, declaratively in the HTML page or programmatically in code-behind (or code-beside).&lt;br /&gt; &lt;br /&gt;&lt;b&gt;2.0 Beta&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output.  All that is required is an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;1.0 RTW&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output using an AIP image placeholder control and an AIP textbox placeholder control, which are used to indicate where the image and textbox controls should be placed, respectively, within your custom HTML template.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="config"&gt;&lt;/a&gt;Configuration
&lt;/h3&gt;AIP is configured in your website's web.config file using ASP.NET 2.0 providers.  One provider generates the text, one renders the image and any number of filter providers may be configured to help randomize the output.  AIP has a basic English text provider and a line-noise bitmap provider configured by default, which makes the web control usable out-of-the-box.  You can create your own text, image and filter provider implementations if you have your own CAPTCHA algorithms that you'd like to use, or just configure the existing filters to customize the default output.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 1&lt;/b&gt;&lt;br /&gt;This example illustrates the minimum required configuration to use the AIP web control.  Add the &lt;span class="codeInline"&gt;httpHandlers&lt;/span&gt; registration to your &lt;i&gt;web.config&lt;/i&gt; file exactly as it appears here: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;AIP.ashx&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;b&gt;Note:&lt;/b&gt; An &lt;b&gt;AIP.ashx&lt;/b&gt; file &lt;i&gt;does not exist&lt;/i&gt;.  ASP.NET routes requests to the AIP request handler automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 2&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Note that this example only applies to AIP 1.0.  Refer to the 2.0 Beta documentation for 2.0 examples.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Here is an example configuration section for AIP that uses a text provider to generate random characters, the resource-based bitmap provider, the translucent bar overlay filter provider, and also adds a custom filter provider named, &lt;i&gt;crosshatch&lt;/i&gt;: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;sectionGroup name=&amp;quot;dsweb&amp;quot;&amp;gt;
      &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/sectionGroup&amp;gt;
  &amp;lt;/configSections&amp;gt;
  &amp;lt;dsweb&amp;gt;
    &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;randomtext&amp;quot; defaultBitmapProvider=&amp;quot;resource&amp;quot;&amp;gt;
      &amp;lt;textProviders&amp;gt;
        &amp;lt;add name=&amp;quot;randomtext&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot;
             minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
      &amp;lt;/textProviders&amp;gt;
      &amp;lt;bitmapProviders&amp;gt;
        &amp;lt;add name=&amp;quot;resource&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionBitmapProvider, DaveSexton.AutoInputProtection&amp;quot;
             minimumCharacterRotationDegrees=&amp;quot;-15&amp;quot; maximumCharacterRotationDegrees=&amp;quot;15&amp;quot; /&amp;gt;
      &amp;lt;/bitmapProviders&amp;gt;
      &amp;lt;filters&amp;gt;
        &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
        &amp;lt;add name=&amp;quot;crosshatch&amp;quot;
             type=&amp;quot;CrossHatchAutoInputProtectionFilterProvider&amp;quot; /&amp;gt;
      &amp;lt;/filters&amp;gt;
    &amp;lt;/autoInputProtection&amp;gt;
  &amp;lt;/dsweb&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add path=&amp;quot;AIP.ashx&amp;quot; verb=&amp;quot;GET&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9478" alt="Example-CrossHatch1.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9480" alt="Example-CrossHatch3.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9481" alt="Example-CrossHatch4.jpg" /&gt;&lt;br /&gt;&lt;b&gt;Figure 1: Rendered Examples&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;For information on the &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; class, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; is built-in to the AIP library.  The new implementation also provides randomization and extra options.&lt;br /&gt; &lt;br /&gt;For information about the &lt;span class="codeInline"&gt;dsweb&lt;/span&gt; configuration section, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#configure"&gt;How Do I configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, the &lt;span class="codeInline"&gt;&amp;lt;dsweb&amp;gt;&lt;/span&gt; section group is no longer used.  Instead, the &lt;span class="codeInline"&gt;&amp;lt;autoInputProtection/&amp;gt;&lt;/span&gt; section is used by itself.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="spam"&gt;&lt;/a&gt;About Spam
&lt;/h3&gt;Spam is a problem.  Not only is it annoying but it's also immoral, and sometimes illegal.  Spammers attempt to make money at your expense or decrease the value of the services that your website provides.  The latter case is not usually classified as spam, however, but is actually some form of hacking instead; AIP will help you to protect your web forms against both types of automated attacks, regardless of the attacker's intention.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Link Attack&lt;/b&gt;&lt;br /&gt;A spammer will look for unprotected blogs, forums and wikis that allow links to be posted.  The spammer will do what it takes to get their links visible on your web pages.  When a link to a spammer's site appears in your website, and your site is indexed by some search engine such as Google, the mere presence of the spammer's link may increase the score of the their website in the search engine.  A higher score increases the chances that their site will appear closer to the top in search results.  Higher score/rank can mean increased sales and profit from embedded ads in the spammer's site simply because they are increasing their site's visibility on the net.  You suffer, your blog/forum/wiki/website users suffer and Joe Spammer makes some loot.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Automated Attack&lt;/b&gt;&lt;br /&gt;Spammers, just like legitimate businesses with morals, find ways to automate processes using computers.  One such way is automated blog spamming, for example.  A computer program searches the more well-known blog sites, and personal blogs that use commercial software, to find anonymous comment forms where they can post their site's links, automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Protection from Automated Spammers&lt;/b&gt;&lt;br /&gt;There are ways that you can protect your sites and blogs from these types of spam attacks.  CAPTCHA is only one of those ways, and it isn't always the most appropriate either.  One problem with CAPTCHA, for example, is that it's not accessibility-friendly.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;How does an image with text help?&lt;/b&gt;&lt;br /&gt;CAPTCHA renders text in an image because computers have a much harder time parsing image-based text than people do.  A user can &lt;i&gt;easily&lt;/i&gt; duplicate the text that they see while computers cannot.  This allows websites to distinguish between legitimate users and automated spamming software.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;A Spammers Response to CAPTCHA&lt;/b&gt;&lt;br /&gt;One line-of-attack that automated spammers use against CAPTCHA is optical character recognition (OCR).  OCR is software that can read text from an image.  Examples of OCR can be found in programs such as Adobe Acrobat and Microsoft Office OneNote, which allows you to search for text in embedded images.&lt;br /&gt; &lt;br /&gt;You can defend against spammer's OCR by making it harder for computers to distinguish between the outline of characters and the image's background, or clutter-content; as long as a human can &lt;i&gt;easily&lt;/i&gt; distinguish between the validation text and the rest of the image, you have yourself a CAPTCHA solution.&lt;br /&gt; &lt;br /&gt;Examples of CAPTCHA can be found on many websites that provide public web forms for site membership or simple data entry, such as right here on CodePlex when you register a new project!&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="resources"&gt;&lt;/a&gt;External Resources
&lt;/h3&gt;Here is a list of resources that you can use to start researching about spam and methods for protection like CAPTCHA.&lt;br /&gt; &lt;br /&gt;Spam in blogs. (2007, March 13). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;CAPTCHA. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Optical character recognition. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 11:28, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="help"&gt;&lt;/a&gt;Help and Feedback
&lt;/h3&gt;AIP 2.0 Beta provides a standalone compiled help file and the installer integrates documentation into Visual Studio 2005 and 2008 automatically.  Refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes&lt;/a&gt; for more information.&lt;br /&gt; &lt;br /&gt;For help performing some of the more common tasks associated with AIP, see the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;For information about AIP text, bitmap and filter providers, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=Home"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;For questions and concerns that aren't addressed by the wikis you may use the &lt;b&gt;Discussions&lt;/b&gt; area and bugs may be reported in the &lt;b&gt;Issue Tracker&lt;/b&gt;.  If you prefer to submit your questions or comments to the team then please contact, &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;; however, if you are asking a question then please check the wikis and &lt;b&gt;Discussions&lt;/b&gt; for answers first!&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 11:25:40 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080402112540A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/aip/Wiki/View.aspx?title=Home&amp;version=28</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="#Examples"&gt;Examples&lt;/a&gt; | &lt;a href="#Features"&gt;Features&lt;/a&gt; | &lt;a href="#require"&gt;Requirements&lt;/a&gt; | &lt;a href="#project"&gt;Project&lt;/a&gt; | &lt;a href="#usage"&gt;Usage&lt;/a&gt; | &lt;a href="#appearance"&gt;Appearance&lt;/a&gt; | &lt;a href="#config"&gt;Configuration&lt;/a&gt; | &lt;a href="#spam"&gt;About Spam&lt;/a&gt; | &lt;a href="#resources"&gt;External Resources&lt;/a&gt; | &lt;a href="#help"&gt;Help and Feedback&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=Wikimap&amp;amp;referringTitle=Home"&gt;&amp;lt;Wikimap&amp;gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=RTW1&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 1.0 RTW&lt;/a&gt; | &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes for 2.0 Beta&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;AIP is an extensible ASP.NET web control that provides CAPTCHA protection for your blogs, forums, wikis and websites, greatly reducing the likelihood of unwanted form submission from automated spam and hacks.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP 2.0 Beta works with Visual Studio 2005, 2008, and Visual Web Developer Express&lt;/b&gt;.  The AIP web control provides design-time support in Visual Studio 2005 and 2008.  The installer automatically adds the control to the toolbox and merges the AIP documentation into Visual Studio's help.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP works with minimal configuration&lt;/b&gt;.  Only an HTTP request handler must be added to your web.config file and you'll be able to use the control on all of your web pages that require protection.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP uses a server-side event&lt;/b&gt; of a custom validator control to test user input so that if user validation fails, &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AIP is fully extensible&lt;/b&gt;.  You can define a custom layout template for the control and configure built-in text, image and filter providers to produce random CAPTCHAs in various formats.  You can also create custom providers that generate randomized text, images and filters.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Examples"&gt;&lt;/a&gt;Examples
&lt;/h3&gt;The following example uses the AIP web control with its default template and default text and image providers (basic English and line noise, respectively).&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=11028" alt="Example-Default.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The next example uses a custom data-bound template and various built-in providers.&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure2"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=8979" alt="Example-Blog.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;The final example illustrates a random CAPTCHA that has been generated using built-in text and filter providers, and a custom image provider.  (Note that a randomized cross hatch filter provider is now built-in as of 2.0 Beta.)&lt;br /&gt; &lt;br /&gt;&lt;a name="Figure3"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9479" alt="Example-CrossHatch2.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="Features"&gt;&lt;/a&gt;Features
&lt;/h3&gt;The AIP Web Control&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;works out-of-the-box with minimal configuration; only the Http Handler must be configured.&lt;/li&gt;&lt;li&gt;2.0 Beta can be configured to use the ASP.NET cache or session state (useful for web farms).  The web control also works with view state disabled.&lt;/li&gt;&lt;li&gt;can be used on web form and user control designers in Visual Studio.&lt;/li&gt;&lt;li&gt;can be edited in template-mode with two placeholder controls; one that provides the location of the CAPTCHA image and another provides the validation textbox.  Literal content and server controls are supported in the template for complete control over its appearance.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Note:&lt;/b&gt; 2.0 Beta no longer requires placeholder controls in custom templates.  Instead, you must add an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;uses ASP.NET validation controls.  Check &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; upon post-back to determine whether validation succeeded.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;You can specify custom error messages for a validation summary.  2.0 Beta also provides properties to set in-line error messages.&lt;/li&gt;&lt;li&gt;The control in 2.0 Beta exposes a &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; property that will automatically set the &lt;span class="codeInline"&gt;ValidationGroup&lt;/span&gt; properties of the validator controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;The CAPTCHA text&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;can be generated with a custom algorithm.&lt;/li&gt;&lt;li&gt;can be random, basic English words from the Ogden dictionary, which is built-in to the AIP library.&lt;/li&gt;&lt;li&gt;can be characters chosen at random from a configurable character set that includes any combination of upper-case and lower-case letters, the number zero, positive digits and pre-defined symbols.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;The default list of characters that are excluded can be modified.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;can be case-sensitive for validation.&lt;/li&gt;&lt;li&gt;has a random length that is configurable with maximum and minimum values.&lt;/li&gt;&lt;li&gt;has a customizable appearance, providing control over the list of sampled colors and fonts, the size range of characters, and provider-specific attributes that are all configured in the web.config file.&lt;/li&gt;
&lt;/ul&gt;The AIP library&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;produces random output that can easily be configured to vary greatly in appearance between sites.&lt;/li&gt;&lt;li&gt;is extensible, using custom ASP.NET 2.0 providers to generate the CAPTCHA text and image, and to apply graphical filters.&lt;/li&gt;&lt;li&gt;has a text provider that chooses words from the Ogden dictionary.&lt;/li&gt;&lt;li&gt;has a text provider that chooses random characters.&lt;/li&gt;&lt;li&gt;has a base bitmap provider that creates a bitmap with text rendered in evenly spaced vertical partitions.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders line-noise with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a bitmap provider that renders 1 of 5 random background images with vertically-partitioned text.&lt;/li&gt;&lt;li&gt;has a filter provider that can render randomized translucent bars, vertically or horizontally, as an overlay.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
&lt;a name="require"&gt;&lt;/a&gt;Requirements
&lt;/h3&gt;AIP only requires ASP.NET 2.0.&lt;br /&gt; &lt;br /&gt;Install the Microsoft .NET Framework 2.0, 3.0 or 3.5 to use AIP in your web sites.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="project"&gt;&lt;/a&gt;Project
&lt;/h3&gt;The AIP project was written, and will continue to be written, exclusively in C#.  2.0 Beta was built with C# 3.0 and Visual Studio 2008.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Plans&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Globalization&lt;/li&gt;&lt;li&gt;Community participation in the development of new image filters for CAPTCHA algorithms&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Team&lt;/b&gt;&lt;br /&gt;If you'd like to become a team member, please contact &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  As indicated above, anyone that can implement image filters in C# for different/better CAPTCHA algorithms would make a great addition to the team.  Please mention some of your qualifications and your motivation for becoming a team member in your email.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="usage"&gt;&lt;/a&gt;Usage
&lt;/h3&gt;Add the AIP web control to your web forms and an image containing random text will be generated automatically, unique to each request.  Users must enter the text that they see into a textbox before submitting the form.  If a user enters invalid text then &lt;span class="codeInline"&gt;Page.IsValid&lt;/span&gt; will be false on post-back.  You can use &lt;span class="codeInline"&gt;ValidationSummary&lt;/span&gt; controls to display errors or set in-line error message properties on the AIP web control.&lt;br /&gt; &lt;br /&gt;For more information please refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="appearance"&gt;&lt;/a&gt;Appearance
&lt;/h3&gt;The appearance of the AIP web control may be customized in a designer, declaratively in the HTML page or programmatically in code-behind (or code-beside).&lt;br /&gt; &lt;br /&gt;&lt;b&gt;2.0 Beta&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output.  All that is required is an Image control with an ID of &lt;b&gt;Image&lt;/b&gt; and a CustomValidator control with an ID of &lt;b&gt;Validator&lt;/b&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;1.0 RTW&lt;/b&gt;&lt;br /&gt;The AIP web control is a templated control that supports complete customization of its output using an AIP image placeholder control and an AIP textbox placeholder control, which are used to indicate where the image and textbox controls should be placed, respectively, within your custom HTML template.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="config"&gt;&lt;/a&gt;Configuration
&lt;/h3&gt;AIP is configured in your website's web.config file using ASP.NET 2.0 providers.  One provider generates the text, one renders the image and any number of filter providers may be configured to help randomize the output.  AIP has a basic English text provider and a line-noise bitmap provider configured by default, which makes the web control usable out-of-the-box.  You can create your own text, image and filter provider implementations if you have your own CAPTCHA algorithms that you'd like to use, or just configure the existing filters to customize the default output.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 1&lt;/b&gt;&lt;br /&gt;This example illustrates the minimum required configuration to use the AIP web control.  Add the &lt;span class="codeInline"&gt;httpHandlers&lt;/span&gt; registration to your &lt;i&gt;web.config&lt;/i&gt; file exactly as it appears here: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;AIP.ashx&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;b&gt;Note:&lt;/b&gt; An &lt;b&gt;AIP.ashx&lt;/b&gt; file &lt;i&gt;does not exist&lt;/i&gt;.  ASP.NET routes requests to the AIP request handler automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Example 2&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Note that this example only applies to AIP 1.0.  Refer to the 2.0 Beta documentation for 2.0 examples.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;Here is an example configuration section for AIP that uses a text provider to generate random characters, the resource-based bitmap provider, the translucent bar overlay filter provider, and also adds a custom filter provider named, &lt;i&gt;crosshatch&lt;/i&gt;: &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;configSections&amp;gt;
    &amp;lt;sectionGroup name=&amp;quot;dsweb&amp;quot;&amp;gt;
      &amp;lt;section name=&amp;quot;autoInputProtection&amp;quot;
               type=&amp;quot;DaveSexton.Web.Controls.Configuration.AutoInputProtectionSection, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/sectionGroup&amp;gt;
  &amp;lt;/configSections&amp;gt;
  &amp;lt;dsweb&amp;gt;
    &amp;lt;autoInputProtection defaultTextProvider=&amp;quot;randomtext&amp;quot; defaultBitmapProvider=&amp;quot;resource&amp;quot;&amp;gt;
      &amp;lt;textProviders&amp;gt;
        &amp;lt;add name=&amp;quot;randomtext&amp;quot;
             type=&amp;quot;DaveSexton.Web.Controls.RandomCharactersAutoInputProtectionTextProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Red,Green,Blue,Brown&amp;quot; fonts=&amp;quot;Times New Roman,Arial,Lucida Sans&amp;quot;
             minimumFontSize=&amp;quot;20&amp;quot; maximumFontSize=&amp;quot;35&amp;quot; /&amp;gt;
      &amp;lt;/textProviders&amp;gt;
      &amp;lt;bitmapProviders&amp;gt;
        &amp;lt;add name=&amp;quot;resource&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.ResourceAutoInputProtectionBitmapProvider, DaveSexton.AutoInputProtection&amp;quot;
             minimumCharacterRotationDegrees=&amp;quot;-15&amp;quot; maximumCharacterRotationDegrees=&amp;quot;15&amp;quot; /&amp;gt;
      &amp;lt;/bitmapProviders&amp;gt;
      &amp;lt;filters&amp;gt;
        &amp;lt;add name=&amp;quot;horizontalbars&amp;quot; 
             type=&amp;quot;DaveSexton.Web.Controls.TranslucentBarsOverlayAutoInputProtectionFilterProvider, DaveSexton.AutoInputProtection&amp;quot;
             colors=&amp;quot;Orange,Yellow,Fuchsia&amp;quot; /&amp;gt;
        &amp;lt;add name=&amp;quot;crosshatch&amp;quot;
             type=&amp;quot;CrossHatchAutoInputProtectionFilterProvider&amp;quot; /&amp;gt;
      &amp;lt;/filters&amp;gt;
    &amp;lt;/autoInputProtection&amp;gt;
  &amp;lt;/dsweb&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpHandlers&amp;gt;
      &amp;lt;add path=&amp;quot;AIP.ashx&amp;quot; verb=&amp;quot;GET&amp;quot;
           type=&amp;quot;DaveSexton.Web.Controls.AutoInputProtectionRequestHandler, DaveSexton.AutoInputProtection&amp;quot; /&amp;gt;
    &amp;lt;/httpHandlers&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;a name="Figure1"&gt;&lt;/a&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9478" alt="Example-CrossHatch1.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9480" alt="Example-CrossHatch3.jpg" /&gt; &lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aip&amp;amp;DownloadId=9481" alt="Example-CrossHatch4.jpg" /&gt;&lt;br /&gt;&lt;b&gt;Figure 1: Rendered Examples&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;For information on the &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; class, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#createfilterprovider"&gt;How Do I create a custom AIP filter provider?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, &lt;span class="codeInline"&gt;CrossHatchAutoInputProtectionFilterProvider&lt;/span&gt; is built-in to the AIP library.  The new implementation also provides randomization and extra options.&lt;br /&gt; &lt;br /&gt;For information about the &lt;span class="codeInline"&gt;dsweb&lt;/span&gt; configuration section, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home&amp;amp;ANCHOR#configure"&gt;How Do I configure my ASP.NET 2.0 website to use AIP?&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; As of 2.0 Beta, the &lt;span class="codeInline"&gt;&amp;lt;dsweb&amp;gt;&lt;/span&gt; section group is no longer used.  Instead, the &lt;span class="codeInline"&gt;&amp;lt;autoInputProtection/&amp;gt;&lt;/span&gt; section is used by itself.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="spam"&gt;&lt;/a&gt;About Spam
&lt;/h3&gt;Spam is a problem.  Not only is it annoying but it's also immoral, and sometimes illegal.  Spammers attempt to make money at your expense or decrease the value of the services that your website provides.  The latter case is not usually classified as spam, however, but is actually some form of hacking instead; AIP will help you to protect your web forms against both types of automated attacks, regardless of the attacker's intention.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Link Attack&lt;/b&gt;&lt;br /&gt;A spammer will look for unprotected blogs, forums and wikis that allow links to be posted.  The spammer will do what it takes to get their links visible on your web pages.  When a link to a spammer's site appears in your website, and your site is indexed by some search engine such as Google, the mere presence of the spammer's link may increase the score of the their website in the search engine.  A higher score increases the chances that their site will appear closer to the top in search results.  Higher score/rank can mean increased sales and profit from embedded ads in the spammer's site simply because they are increasing their site's visibility on the net.  You suffer, your blog/forum/wiki/website users suffer and Joe Spammer makes some loot.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;The Automated Attack&lt;/b&gt;&lt;br /&gt;Spammers, just like legitimate businesses with morals, find ways to automate processes using computers.  One such way is automated blog spamming, for example.  A computer program searches the more well-known blog sites, and personal blogs that use commercial software, to find anonymous comment forms where they can post their site's links, automatically.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Protection from Automated Spammers&lt;/b&gt;&lt;br /&gt;There are ways that you can protect your sites and blogs from these types of spam attacks.  CAPTCHA is only one of those ways, and it isn't always the most appropriate either.  One problem with CAPTCHA, for example, is that it's not accessibility-friendly.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;How does an image with text help?&lt;/b&gt;&lt;br /&gt;CAPTCHA renders text in an image because computers have a much harder time parsing image-based text than people do.  A user can &lt;i&gt;easily&lt;/i&gt; duplicate the text that they see while computers cannot.  This allows websites to distinguish between legitimate users and automated spamming software.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;A Spammers Response to CAPTCHA&lt;/b&gt;&lt;br /&gt;One line-of-attack that automated spammers use against CAPTCHA is optical character recognition (OCR).  OCR is software that can read text from an image.  Examples of OCR can be found in programs such as Adobe Acrobat and Microsoft Office OneNote, which allows you to search for text in embedded images.&lt;br /&gt; &lt;br /&gt;You can defend against spammer's OCR by making it harder for computers to distinguish between the outline of characters and the image's background, or clutter-content; as long as a human can &lt;i&gt;easily&lt;/i&gt; distinguish between the validation text and the rest of the image, you have yourself a CAPTCHA solution.&lt;br /&gt; &lt;br /&gt;Examples of CAPTCHA can be found on many websites that provide public web forms for site membership or simple data entry, such as right here on CodePlex when you register a new project!&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="resources"&gt;&lt;/a&gt;External Resources
&lt;/h3&gt;Here is a list of resources that you can use to start researching about spam and methods for protection like CAPTCHA.&lt;br /&gt; &lt;br /&gt;Spam in blogs. (2007, March 13). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Spam_in_blogs&amp;amp;oldid=114772085&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;CAPTCHA. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 10:09, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=CAPTCHA&amp;amp;oldid=116053310&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Optical character recognition. (2007, March 18). In Wikipedia, The Free Encyclopedia. Retrieved 11:28, March 22, 2007&lt;br /&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377" class="externalLink"&gt;http://en.wikipedia.org/w/index.php?title=Optical_character_recognition&amp;amp;oldid=116115377&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a name="help"&gt;&lt;/a&gt;Help and Feedback
&lt;/h3&gt;AIP 2.0 Beta provides a standalone compiled help file and the installer integrates documentation into Visual Studio 2005 and 2008 automatically.  Refer to the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=LatestReleaseNotes&amp;amp;referringTitle=Home"&gt;Latest Release Notes&lt;/a&gt; for more information.&lt;br /&gt; &lt;br /&gt;For help performing some of the more common tasks associated with AIP, see the &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=HowDoI&amp;amp;referringTitle=Home"&gt;How Do I&lt;/a&gt; wiki.&lt;br /&gt; &lt;br /&gt;For information about AIP text, bitmap and filter providers, see &lt;a href="http://www.codeplex.com/aip/Wiki/View.aspx?title=AIPProviders&amp;amp;referringTitle=Home"&gt;AIP Providers&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;For questions and concerns that aren't addressed by the wikis you may use the &lt;b&gt;Discussions&lt;/b&gt; area and bugs may be reported in the &lt;b&gt;Issue Tracker&lt;/b&gt;.  If you prefer to submit your questions or comments to the team then please contact, &lt;a href="http://davesexton.com/Contact" class="externalLink"&gt;Dave Sexton&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;; however, if you are asking a question then please check the wikis and &lt;b&gt;Discussions&lt;/b&gt; for answers first!&lt;br /&gt;
&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 Apr 2008 11:24:24 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080402112424A</guid></item></channel></rss>