<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Safer Contact Forms Without CAPTCHA&#8217;s</title>
	<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/</link>
	<description>Examples and tutorials to help you learn JQuery</description>
	<pubDate>Sat, 05 Jul 2008 18:59:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1</generator>

	<item>
		<title>By: Dave Cardwell</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-23</link>
		<author>Dave Cardwell</author>
		<pubDate>Wed, 31 May 2006 07:46:10 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-23</guid>
					<description>Am I right in thinking you would not allow contact through the form unless the jQuery values had been set?

Where would this leave people with JavaScript disabled, and users of assistive technologies without the option?</description>
		<content:encoded><![CDATA[<p>Am I right in thinking you would not allow contact through the form unless the jQuery values had been set?</p>
<p>Where would this leave people with JavaScript disabled, and users of assistive technologies without the option?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-26</link>
		<author>Jack</author>
		<pubDate>Wed, 31 May 2006 13:02:19 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-26</guid>
					<description>On one of the last slides of the step by step tutorial I wrote:

&lt;blockquote&gt;
Con: a teeny tiny percentage of your audience will either have javascript or cookies disabled

You just have to weigh this against your alternatives:

* Less security for your forms + spammers probing for weak points
* Annoying CAPTCHA tests that suppress communication with visitors

&lt;/blockquote&gt;

In addition, in the demo, I wrote about a warning message that could be shown if javascript is disabled. You could put a link in this message to a different form, or other options for contact.

My tutorial provides a possible solution with lots of upside but with certain downside.

It's up to you to decide if the benefits outweigh the costs.</description>
		<content:encoded><![CDATA[<p>On one of the last slides of the step by step tutorial I wrote:</p>
<blockquote><p>
Con: a teeny tiny percentage of your audience will either have javascript or cookies disabled</p>
<p>You just have to weigh this against your alternatives:</p>
<p>* Less security for your forms + spammers probing for weak points<br />
* Annoying CAPTCHA tests that suppress communication with visitors</p>
</blockquote>
<p>In addition, in the demo, I wrote about a warning message that could be shown if javascript is disabled. You could put a link in this message to a different form, or other options for contact.</p>
<p>My tutorial provides a possible solution with lots of upside but with certain downside.</p>
<p>It&#8217;s up to you to decide if the benefits outweigh the costs.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: glitsj</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-28</link>
		<author>glitsj</author>
		<pubDate>Wed, 31 May 2006 14:52:58 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-28</guid>
					<description>Thx for your continuous work to make forms safer and manageable !

Just one small remark. Your demo.php file also references cookieFunctions.js, which doesn't seem to be either needed nor included ...

Keep those tutorials coming :D</description>
		<content:encoded><![CDATA[<p>Thx for your continuous work to make forms safer and manageable !</p>
<p>Just one small remark. Your demo.php file also references cookieFunctions.js, which doesn&#8217;t seem to be either needed nor included &#8230;</p>
<p>Keep those tutorials coming <img src='http://15daysofjquery.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-29</link>
		<author>Jack</author>
		<pubDate>Wed, 31 May 2006 16:06:48 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-29</guid>
					<description>@glitsj,
Thanks for the heads up... that was hold over from a different version and I missed it.  Extraneous js now gone... thanks.</description>
		<content:encoded><![CDATA[<p>@glitsj,<br />
Thanks for the heads up&#8230; that was hold over from a different version and I missed it.  Extraneous js now gone&#8230; thanks.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Alexander K. Schrøder</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-215</link>
		<author>Alexander K. Schrøder</author>
		<pubDate>Mon, 17 Jul 2006 07:29:08 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-215</guid>
					<description>This idea is bad. You know why? It requires Javascript to be enable. 'nuff said.</description>
		<content:encoded><![CDATA[<p>This idea is bad. You know why? It requires Javascript to be enable. &#8217;nuff said.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-216</link>
		<author>Jack</author>
		<pubDate>Mon, 17 Jul 2006 14:34:59 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-216</guid>
					<description>Alexander,
Labeling a technique, such as this, as "bad" or "good" is simplistic and assumes that you know the "right" way.

This is a technique.

It has benefits - and it has drawbacks.

As others have commented, it can be useful for some developers. For you, it is of no use.

'nuff said.</description>
		<content:encoded><![CDATA[<p>Alexander,<br />
Labeling a technique, such as this, as &#8220;bad&#8221; or &#8220;good&#8221; is simplistic and assumes that you know the &#8220;right&#8221; way.</p>
<p>This is a technique.</p>
<p>It has benefits - and it has drawbacks.</p>
<p>As others have commented, it can be useful for some developers. For you, it is of no use.</p>
<p>&#8217;nuff said.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Gilles</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-428</link>
		<author>Gilles</author>
		<pubDate>Fri, 13 Oct 2006 13:40:04 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-428</guid>
					<description>You won't even need cookies for this technique. In the PHP file that generates the hash, you could set a session variable. In the PHP file validating the input, you could dynamicly check for the input tag which should have been generated by jQuery to see if the user had javascript enabled.</description>
		<content:encoded><![CDATA[<p>You won&#8217;t even need cookies for this technique. In the PHP file that generates the hash, you could set a session variable. In the PHP file validating the input, you could dynamicly check for the input tag which should have been generated by jQuery to see if the user had javascript enabled.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Tarwin</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-660</link>
		<author>Tarwin</author>
		<pubDate>Tue, 28 Nov 2006 06:01:07 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-660</guid>
					<description>There was an interesting discussion on this topic on Humanized.org weblog.

I proposed something similar to this in a comment, but after reading this, and being impressed, realized that you could add another layer to make it totally non JS reliant.

Have a CAPTCHA in the form which is removed by JS. This way works with JS off.</description>
		<content:encoded><![CDATA[<p>There was an interesting discussion on this topic on Humanized.org weblog.</p>
<p>I proposed something similar to this in a comment, but after reading this, and being impressed, realized that you could add another layer to make it totally non JS reliant.</p>
<p>Have a CAPTCHA in the form which is removed by JS. This way works with JS off.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-671</link>
		<author>Jack</author>
		<pubDate>Wed, 29 Nov 2006 17:32:19 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-671</guid>
					<description>I'm not sure I follow... can you connect the dots for me?  I'd like to know what you're suggesting.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure I follow&#8230; can you connect the dots for me?  I&#8217;d like to know what you&#8217;re suggesting.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Deep</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-710</link>
		<author>Deep</author>
		<pubDate>Tue, 05 Dec 2006 10:51:06 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-710</guid>
					<description>Good stuff, one thing noticed in your code, it is calling for a js file for cookie (cookieFunctions.js) but that file isnt present in the archive.

Regards,
Deep</description>
		<content:encoded><![CDATA[<p>Good stuff, one thing noticed in your code, it is calling for a js file for cookie (cookieFunctions.js) but that file isnt present in the archive.</p>
<p>Regards,<br />
Deep</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-720</link>
		<author>Jack</author>
		<pubDate>Wed, 06 Dec 2006 13:24:57 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-720</guid>
					<description>Deep,
I checked my demo.  The files I packaged up must have a line of code with a hold over from development.  Please ignore the reference to the javascript file.</description>
		<content:encoded><![CDATA[<p>Deep,<br />
I checked my demo.  The files I packaged up must have a line of code with a hold over from development.  Please ignore the reference to the javascript file.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Design to CSS plus Ajax contact form, etc. &#124; The Montoya Herald</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-1650</link>
		<author>Design to CSS plus Ajax contact form, etc. &#124; The Montoya Herald</author>
		<pubDate>Fri, 05 Jan 2007 04:52:07 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-1650</guid>
					<description>[...] The final product combined some PHP code with jQuery and some code from the jQuery forms plugin, and the whole lot wouldn&#8217;t have been possible without Safer Contact Forms Without CAPTCHA’s and Form Submission ajaxSubmit(). The final solution is not bad. When Javascript is not available, a message sharing my e-mail address is visible so people can still contact me. With Javascript available, the form appears as normal and upon submission, it returns responses based on whether the spam check passed and whether all fields were filled in. If it&#8217;s successful, a thank you message appears and the form clears. It&#8217;s all right. I&#8217;m glad I got it done. [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] The final product combined some PHP code with jQuery and some code from the jQuery forms plugin, and the whole lot wouldn&#8217;t have been possible without Safer Contact Forms Without CAPTCHA’s and Form Submission ajaxSubmit(). The final solution is not bad. When Javascript is not available, a message sharing my e-mail address is visible so people can still contact me. With Javascript available, the form appears as normal and upon submission, it returns responses based on whether the spam check passed and whether all fields were filled in. If it&#8217;s successful, a thank you message appears and the form clears. It&#8217;s all right. I&#8217;m glad I got it done. [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: JsD</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-1691</link>
		<author>JsD</author>
		<pubDate>Sat, 06 Jan 2007 23:40:51 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-1691</guid>
					<description>This technique is also very handy for login pages to prevent spoofing. I developed such a page a few years ago and worked like a charm.</description>
		<content:encoded><![CDATA[<p>This technique is also very handy for login pages to prevent spoofing. I developed such a page a few years ago and worked like a charm.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Corey</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-3008</link>
		<author>Corey</author>
		<pubDate>Sun, 18 Feb 2007 05:28:18 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-3008</guid>
					<description>Eh, maybe I'm alone here, but this wouldn't be too hard to crack...assuming I understand what you explained. 

All a remote script needs to do is retrieve the page, then request the hash and send along the cookie as it does it....then submit the form. Sure, it's a little bit more work, but not more than 10 minutes.

Anything a browser can do without the user interacting a bot can do without a user. I think you understand this since you talk about it just making it harder, but I think you overestimated the level of security this will provide. 

It's a great idea though. I came up with something similar a few years ago...I never implemented it though since I haven't needed it (lucky me!).</description>
		<content:encoded><![CDATA[<p>Eh, maybe I&#8217;m alone here, but this wouldn&#8217;t be too hard to crack&#8230;assuming I understand what you explained. </p>
<p>All a remote script needs to do is retrieve the page, then request the hash and send along the cookie as it does it&#8230;.then submit the form. Sure, it&#8217;s a little bit more work, but not more than 10 minutes.</p>
<p>Anything a browser can do without the user interacting a bot can do without a user. I think you understand this since you talk about it just making it harder, but I think you overestimated the level of security this will provide. </p>
<p>It&#8217;s a great idea though. I came up with something similar a few years ago&#8230;I never implemented it though since I haven&#8217;t needed it (lucky me!).</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: BillsGate</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-4292</link>
		<author>BillsGate</author>
		<pubDate>Fri, 06 Apr 2007 08:53:23 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-4292</guid>
					<description>This solution is simple, but brilliant.

Although it is not quite the holy grail, it's an easy way to separate visitors from bots.

Thank you very much for this example!

A sidenote though, which has nothing really to do with captchas: a common pain in the * is the use of mail forms on websites by bots, to send masses of spam from your server.
If the bot wants to succeed, he has to put a header (mime-type) into the textarea.
Let PHP filter this:
$tmpstr = implode("",$_POST);
if(strpos("mime-type",$tmpstr)===true){
  exit("Your message is considered spam");
}

That, combining with this JQuery addon, should be quite waterproof I think. Just my two cents :)</description>
		<content:encoded><![CDATA[<p>This solution is simple, but brilliant.</p>
<p>Although it is not quite the holy grail, it&#8217;s an easy way to separate visitors from bots.</p>
<p>Thank you very much for this example!</p>
<p>A sidenote though, which has nothing really to do with captchas: a common pain in the * is the use of mail forms on websites by bots, to send masses of spam from your server.<br />
If the bot wants to succeed, he has to put a header (mime-type) into the textarea.<br />
Let PHP filter this:<br />
$tmpstr = implode(&#8221;",$_POST);<br />
if(strpos(&#8221;mime-type&#8221;,$tmpstr)===true){<br />
  exit(&#8221;Your message is considered spam&#8221;);<br />
}</p>
<p>That, combining with this JQuery addon, should be quite waterproof I think. Just my two cents <img src='http://15daysofjquery.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Elliot</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-4315</link>
		<author>Elliot</author>
		<pubDate>Fri, 06 Apr 2007 22:08:34 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-4315</guid>
					<description>Thanks for 15 days.  I'm a jQuery beginner and am getting a lot out of your series.  In addition to the substance, I love the slide show, especially those beautiful colorized code cutout images.  Would it be rude to ask what tools you use to produce those?  If so, my apologies.  If not, I'd be appreciative.  Thanks!</description>
		<content:encoded><![CDATA[<p>Thanks for 15 days.  I&#8217;m a jQuery beginner and am getting a lot out of your series.  In addition to the substance, I love the slide show, especially those beautiful colorized code cutout images.  Would it be rude to ask what tools you use to produce those?  If so, my apologies.  If not, I&#8217;d be appreciative.  Thanks!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-4454</link>
		<author>Jack</author>
		<pubDate>Mon, 09 Apr 2007 14:35:27 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-4454</guid>
					<description>Elliot,
Sure. I use a Techsmith product for screengrabs called SnagIt. I bought this as a bundle with another product, and I betcha you can find much cheaper ways to reproduce my cutouts. But that's what I use, because I have it and it's pretty easy.

As for the slideshow, it's a javascript you can download free.  I believe if you look at the javascript file of the slideshow you will see a url to the author's website.</description>
		<content:encoded><![CDATA[<p>Elliot,<br />
Sure. I use a Techsmith product for screengrabs called SnagIt. I bought this as a bundle with another product, and I betcha you can find much cheaper ways to reproduce my cutouts. But that&#8217;s what I use, because I have it and it&#8217;s pretty easy.</p>
<p>As for the slideshow, it&#8217;s a javascript you can download free.  I believe if you look at the javascript file of the slideshow you will see a url to the author&#8217;s website.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: JO</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5062</link>
		<author>JO</author>
		<pubDate>Thu, 19 Apr 2007 01:07:03 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5062</guid>
					<description>Great tutorial, but is this possible in asp.net. Would be great if someone can come up with one.</description>
		<content:encoded><![CDATA[<p>Great tutorial, but is this possible in asp.net. Would be great if someone can come up with one.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Aaron</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5147</link>
		<author>Aaron</author>
		<pubDate>Sat, 21 Apr 2007 17:21:42 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5147</guid>
					<description>@JO,
I recently had to reduce some comment spam, and wrote about it here: http://intrepidnoodle.com/blog/show/9.aspx

Its a bit simpler than this technique, and I suspect probably doesn't work as well, but its so easy to implement that its worthwhile to stay out of the 'low hanging fruit' example...</description>
		<content:encoded><![CDATA[<p>@JO,<br />
I recently had to reduce some comment spam, and wrote about it here: <a href="http://intrepidnoodle.com/blog/show/9.aspx" rel="nofollow">http://intrepidnoodle.com/blog/show/9.aspx</a></p>
<p>Its a bit simpler than this technique, and I suspect probably doesn&#8217;t work as well, but its so easy to implement that its worthwhile to stay out of the &#8216;low hanging fruit&#8217; example&#8230;</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Mike Robinson</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5369</link>
		<author>Mike Robinson</author>
		<pubDate>Thu, 26 Apr 2007 16:11:43 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5369</guid>
					<description>A technique that I have used with some success is based on the realization that spam-bots are either 'extremely fast' or (by using previously-cached strings) 'extremely slow.'

When the input-form is generated, it is marked "do not cache" (so the browser will actually retrieve something new from us), and it includes a hidden-field containing an unrecognizable hash.

This hash is based on the IP-address of the requester, a salt-value and a garbage string known only to us.  It masks, by means of exclusive-OR, the server date/time and another checksum/hash.

When we receive the input, we unmask it, verify the checksum in the unmasked data (to know that the unmasking worked), then check the timestamp thus revealed.

This timestamp must be (say) more than 30 seconds old, and not more than 15 minutes old.

Typically, spam-bots are in a hurry.  This stops them dead.</description>
		<content:encoded><![CDATA[<p>A technique that I have used with some success is based on the realization that spam-bots are either &#8216;extremely fast&#8217; or (by using previously-cached strings) &#8216;extremely slow.&#8217;</p>
<p>When the input-form is generated, it is marked &#8220;do not cache&#8221; (so the browser will actually retrieve something new from us), and it includes a hidden-field containing an unrecognizable hash.</p>
<p>This hash is based on the IP-address of the requester, a salt-value and a garbage string known only to us.  It masks, by means of exclusive-OR, the server date/time and another checksum/hash.</p>
<p>When we receive the input, we unmask it, verify the checksum in the unmasked data (to know that the unmasking worked), then check the timestamp thus revealed.</p>
<p>This timestamp must be (say) more than 30 seconds old, and not more than 15 minutes old.</p>
<p>Typically, spam-bots are in a hurry.  This stops them dead.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Elliot</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5414</link>
		<author>Elliot</author>
		<pubDate>Fri, 27 Apr 2007 20:08:40 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5414</guid>
					<description>Jack, thanks very much for the tips on Techsmith's SnagIT, and DOMslides for screen shots and html slide show.  Very helpful.  And again, you've been very generous with 15 days.  Great work and much appreciated!!</description>
		<content:encoded><![CDATA[<p>Jack, thanks very much for the tips on Techsmith&#8217;s SnagIT, and DOMslides for screen shots and html slide show.  Very helpful.  And again, you&#8217;ve been very generous with 15 days.  Great work and much appreciated!!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: marconi</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5997</link>
		<author>marconi</author>
		<pubDate>Fri, 11 May 2007 03:19:55 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-5997</guid>
					<description>the tutorial is cool but it validates even if the name is empty so i added

!empty($_POST['name'])

in the first condition and works great now..</description>
		<content:encoded><![CDATA[<p>the tutorial is cool but it validates even if the name is empty so i added</p>
<p>!empty($_POST[&#8217;name&#8217;])</p>
<p>in the first condition and works great now..</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Rodin</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6810</link>
		<author>Rodin</author>
		<pubDate>Wed, 23 May 2007 03:03:54 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6810</guid>
					<description>Sorry for saying this method is poor...I've worked on attacking CAPTCHAs, in my way , first step of analysis a CAPTCHA is watching the post\get data and cookies. Putting the tokens or keys to the client side is not a good idea - can be easily captured, and this</description>
		<content:encoded><![CDATA[<p>Sorry for saying this method is poor&#8230;I&#8217;ve worked on attacking CAPTCHAs, in my way , first step of analysis a CAPTCHA is watching the post\get data and cookies. Putting the tokens or keys to the client side is not a good idea - can be easily captured, and this</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Rodin</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6813</link>
		<author>Rodin</author>
		<pubDate>Wed, 23 May 2007 03:49:02 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6813</guid>
					<description>(continue) and then, send the cookie and the ts field together, validation in test.php seems to be useless absolutely.</description>
		<content:encoded><![CDATA[<p>(continue) and then, send the cookie and the ts field together, validation in test.php seems to be useless absolutely.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6853</link>
		<author>Jack</author>
		<pubDate>Wed, 23 May 2007 17:35:00 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6853</guid>
					<description>Rodin, and anyone else who says this method is poor,

I don't mind being wrong.

But there are four things that tell me these kinds of replies are silly:

1) Adding similar code dramatically reduces automated spam attempts on real life websites over and over again. Based on actual experience, it works quite well.

2) From what I gather, the comments about how easy this is to beat talk about the *specific* demo I've put up... But tweak the name of the hidden text field, the name of the cookie, and some of the validation, and your bot code is SOL.

3) I would love to see some php or cgi that grabs form fields that are generated through DOM, as jquery would do. Not saying it can't be done, just haven't come across it yet. I'm sure it exists, so show me.

4) This isn't about creating a form that is unbeatable... I clearly say that in my post. It's about thwarting automated spam. If the technique eliminates 99% of most automated spam attempts before it begins, does it have any worth? I think so. 

If you, or someone else reading this post, can create the code I'm told is so easy to create but I haven't seen yet, I'll put my money where my mouth is.

Show me the code that will remotely:
1) read all cookies set, regardless of cookie name, even session variables
2) read all form fields, regardless of name, including fields that are added after page load using javascript DOM methods

I'll pay the first person to show me such code $50 if it meets those specific criteria.

Not saying it can't be done... 

But show me.</description>
		<content:encoded><![CDATA[<p>Rodin, and anyone else who says this method is poor,</p>
<p>I don&#8217;t mind being wrong.</p>
<p>But there are four things that tell me these kinds of replies are silly:</p>
<p>1) Adding similar code dramatically reduces automated spam attempts on real life websites over and over again. Based on actual experience, it works quite well.</p>
<p>2) From what I gather, the comments about how easy this is to beat talk about the *specific* demo I&#8217;ve put up&#8230; But tweak the name of the hidden text field, the name of the cookie, and some of the validation, and your bot code is SOL.</p>
<p>3) I would love to see some php or cgi that grabs form fields that are generated through DOM, as jquery would do. Not saying it can&#8217;t be done, just haven&#8217;t come across it yet. I&#8217;m sure it exists, so show me.</p>
<p>4) This isn&#8217;t about creating a form that is unbeatable&#8230; I clearly say that in my post. It&#8217;s about thwarting automated spam. If the technique eliminates 99% of most automated spam attempts before it begins, does it have any worth? I think so. </p>
<p>If you, or someone else reading this post, can create the code I&#8217;m told is so easy to create but I haven&#8217;t seen yet, I&#8217;ll put my money where my mouth is.</p>
<p>Show me the code that will remotely:<br />
1) read all cookies set, regardless of cookie name, even session variables<br />
2) read all form fields, regardless of name, including fields that are added after page load using javascript DOM methods</p>
<p>I&#8217;ll pay the first person to show me such code $50 if it meets those specific criteria.</p>
<p>Not saying it can&#8217;t be done&#8230; </p>
<p>But show me.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Rodin</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6870</link>
		<author>Rodin</author>
		<pubDate>Thu, 24 May 2007 02:28:18 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6870</guid>
					<description>Jack,thank for your reply, and sorry for my extremely words before, and also my poor English, maybe those words make you feel not good, but plz believe me, i have no malice...

1) I agree with that it can works. Actually in my opinion, main reason is not spammers cannot work out this, but because this method havn't applied commonly, they do not want waste time on such few sites.
2) If this method is used in a widely used open source web application, most of users are lazy or unable to 
change the code, except using a builtin function. So tweak the name maybe not as effective as considered.
3) CGI may unable to do those, but the desktop application can work out.
4) Generally speaking, i like this quick and easy method, and will use it in my personal site. 

I have currently no way to run the JS within a bot, and no common way to defeat most of CAPTCHAs. On the other hand, write a specific spam bot is much easier. 
1) all cookies set can be read at HTTP response header: Set-Cookie . Session variables cannot be read , but in MS ASP(i'm a ASP programmer) server-IIS, session is implemented with a cookie like 'ASPSESSIONIDSDKFJSFS=KSDJFKLSDFSDFSF' (this string length maybe not wrong, just show the pattern), sending the same ASPSessionID, IIS will process requests as same user.

2) This criteria seems hard to me - I'll wrote a script-supported browser if i can do this. It's also difficult/complex to automaticly read the form fields name. Easier implementation is watch out a valid user operation, capture all the request data, then simulate that in bot.

If you really want a bot, I'll write one working but may not meets the criteria.

At last, I still interest at the $50 - it's almost equals my monthly living cost :-(</description>
		<content:encoded><![CDATA[<p>Jack,thank for your reply, and sorry for my extremely words before, and also my poor English, maybe those words make you feel not good, but plz believe me, i have no malice&#8230;</p>
<p>1) I agree with that it can works. Actually in my opinion, main reason is not spammers cannot work out this, but because this method havn&#8217;t applied commonly, they do not want waste time on such few sites.<br />
2) If this method is used in a widely used open source web application, most of users are lazy or unable to<br />
change the code, except using a builtin function. So tweak the name maybe not as effective as considered.<br />
3) CGI may unable to do those, but the desktop application can work out.<br />
4) Generally speaking, i like this quick and easy method, and will use it in my personal site. </p>
<p>I have currently no way to run the JS within a bot, and no common way to defeat most of CAPTCHAs. On the other hand, write a specific spam bot is much easier.<br />
1) all cookies set can be read at HTTP response header: Set-Cookie . Session variables cannot be read , but in MS ASP(i&#8217;m a ASP programmer) server-IIS, session is implemented with a cookie like &#8216;ASPSESSIONIDSDKFJSFS=KSDJFKLSDFSDFSF&#8217; (this string length maybe not wrong, just show the pattern), sending the same ASPSessionID, IIS will process requests as same user.</p>
<p>2) This criteria seems hard to me - I&#8217;ll wrote a script-supported browser if i can do this. It&#8217;s also difficult/complex to automaticly read the form fields name. Easier implementation is watch out a valid user operation, capture all the request data, then simulate that in bot.</p>
<p>If you really want a bot, I&#8217;ll write one working but may not meets the criteria.</p>
<p>At last, I still interest at the $50 - it&#8217;s almost equals my monthly living cost <img src='http://15daysofjquery.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /></p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Rodin</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6871</link>
		<author>Rodin</author>
		<pubDate>Thu, 24 May 2007 02:39:18 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6871</guid>
					<description>This is 12 timezones between us... My local time is 10:38 :-)</description>
		<content:encoded><![CDATA[<p>This is 12 timezones between us&#8230; My local time is 10:38 <img src='http://15daysofjquery.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Rodin</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6872</link>
		<author>Rodin</author>
		<pubDate>Thu, 24 May 2007 02:39:52 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6872</guid>
					<description>AM,24 May 2007</description>
		<content:encoded><![CDATA[<p>AM,24 May 2007</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6900</link>
		<author>Jack</author>
		<pubDate>Thu, 24 May 2007 14:33:47 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-6900</guid>
					<description>I need to move where you live!

Anyhow, thanks for your replies.

Ideally, I'd be interested in a PHP script that did what I've laid out.

And I agree... it would be very difficult.

Your suggestion of a browser type application is the one that I see as most likely for doing everything I've requested for the "prize" money.

That said, this reiterates what I've said before: this isn't the "end all be all" of thwarting automated spam, but in practice it knocks out almost all of it.</description>
		<content:encoded><![CDATA[<p>I need to move where you live!</p>
<p>Anyhow, thanks for your replies.</p>
<p>Ideally, I&#8217;d be interested in a PHP script that did what I&#8217;ve laid out.</p>
<p>And I agree&#8230; it would be very difficult.</p>
<p>Your suggestion of a browser type application is the one that I see as most likely for doing everything I&#8217;ve requested for the &#8220;prize&#8221; money.</p>
<p>That said, this reiterates what I&#8217;ve said before: this isn&#8217;t the &#8220;end all be all&#8221; of thwarting automated spam, but in practice it knocks out almost all of it.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: steampunk</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-7422</link>
		<author>steampunk</author>
		<pubDate>Mon, 04 Jun 2007 23:07:31 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-7422</guid>
					<description>curl token.php to get the page with cookies[token], build ts variable from response, use it 
and the form post/get variables with curl again which results in 
(isset($_POST['ts']) &#38;&#38; isset($_COOKIE['token']) &#38;&#38; $_COOKIE['token'] ) == md5('secret salt'.$_POST['ts'])) hence 
$proceed = true; 
kill curl , repeat.
if you put just this looped into a php file and run it as a shell scripts then you can you change your ip on your network repeatedly.

and just to be annoying, firefox = open source, firefox = web platform capable of doing the above as a plug in. you do this all the time with you use your fancy video grab plug ins  or seo junk...

come to think of it , a ff/ie plugin that inserts a javascript to grab the form variable then submit and clear/alter cookies. reload page repeat.

conclusion, people could sent bogus form information and spam the world using this method.</description>
		<content:encoded><![CDATA[<p>curl token.php to get the page with cookies[token], build ts variable from response, use it<br />
and the form post/get variables with curl again which results in<br />
(isset($_POST[&#8217;ts&#8217;]) &amp;&amp; isset($_COOKIE[&#8217;token&#8217;]) &amp;&amp; $_COOKIE[&#8217;token&#8217;] ) == md5(&#8217;secret salt&#8217;.$_POST[&#8217;ts&#8217;])) hence<br />
$proceed = true;<br />
kill curl , repeat.<br />
if you put just this looped into a php file and run it as a shell scripts then you can you change your ip on your network repeatedly.</p>
<p>and just to be annoying, firefox = open source, firefox = web platform capable of doing the above as a plug in. you do this all the time with you use your fancy video grab plug ins  or seo junk&#8230;</p>
<p>come to think of it , a ff/ie plugin that inserts a javascript to grab the form variable then submit and clear/alter cookies. reload page repeat.</p>
<p>conclusion, people could sent bogus form information and spam the world using this method.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-7458</link>
		<author>Jack</author>
		<pubDate>Tue, 05 Jun 2007 13:03:29 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-7458</guid>
					<description>Put the code up as a .txt file so I can test it out and see if you get $50</description>
		<content:encoded><![CDATA[<p>Put the code up as a .txt file so I can test it out and see if you get $50</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Tobbe</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-7555</link>
		<author>Tobbe</author>
		<pubDate>Thu, 07 Jun 2007 10:51:24 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-7555</guid>
					<description>I think I will use this in combination with a captcha. I'll have some JS remove the captcha so it isn't seen by most people, and then on the php side I first look for the hidden tag. If it matches the token I go ahead with the form processing. If it doesn't I check the captcha which should have been visible in case of JS being disabled on the client side.</description>
		<content:encoded><![CDATA[<p>I think I will use this in combination with a captcha. I&#8217;ll have some JS remove the captcha so it isn&#8217;t seen by most people, and then on the php side I first look for the hidden tag. If it matches the token I go ahead with the form processing. If it doesn&#8217;t I check the captcha which should have been visible in case of JS being disabled on the client side.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: phpdude</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-8837</link>
		<author>phpdude</author>
		<pubDate>Tue, 26 Jun 2007 19:35:05 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-8837</guid>
					<description>If you use a server side scripting language, why could you not embed a unix timestamp and an md5 hash for it as hidden form fields when the form page 1st loads.

Then when you get a post you would first look to be sure the timestamp is within your pre-determined timeframe and that its md5 hash is correct.

If so, go with it. If not, drop it on its head.</description>
		<content:encoded><![CDATA[<p>If you use a server side scripting language, why could you not embed a unix timestamp and an md5 hash for it as hidden form fields when the form page 1st loads.</p>
<p>Then when you get a post you would first look to be sure the timestamp is within your pre-determined timeframe and that its md5 hash is correct.</p>
<p>If so, go with it. If not, drop it on its head.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: vermontdevil</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-15576</link>
		<author>vermontdevil</author>
		<pubDate>Fri, 26 Oct 2007 18:16:46 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-15576</guid>
					<description>Jack - so did the code by steampunk work?</description>
		<content:encoded><![CDATA[<p>Jack - so did the code by steampunk work?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Paul Koppen</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-15672</link>
		<author>Paul Koppen</author>
		<pubDate>Sat, 27 Oct 2007 10:21:25 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-15672</guid>
					<description>First I would like to say, I am really surprised by the simplicity of this method and the fact that *all* php is done in the token file. Truly clever.

But then, of course, I have some comments.
1. I assume you set the cookie instead of a session to keep your solution stateless? Because storing it in a session variable would be just as easy and theoratically more secure (in your solution, an attacker can brute force the salt, and yes I read your 1000 comments on silver bullets).

2. As Mike Robinson put forward, typical bot behaviour can be characterized by either slow or fast responses. So putting a lowerbound on the timestamp is really a good idea.

3. The comment by Tarwin (instead of the warning message, remove a CAPTCHA) is extremely good, for multiple reasons: a) With javascript disabled, the form is still accessible. b) Bots see the CAPTCHA and leave. c) If a bot is so extremely clever to solve the CAPTCHA and your system, we can catch 'em because they send back two solved challenges! d) It is gracefully downgrading; Annoying CAPTCHA tests now suppress only communication with annoying visitors :)

4. It would be friendly to the visitor to tell him/her that the submission time has expired and provide a way to reload without losing form content, wouldn't it?</description>
		<content:encoded><![CDATA[<p>First I would like to say, I am really surprised by the simplicity of this method and the fact that *all* php is done in the token file. Truly clever.</p>
<p>But then, of course, I have some comments.<br />
1. I assume you set the cookie instead of a session to keep your solution stateless? Because storing it in a session variable would be just as easy and theoratically more secure (in your solution, an attacker can brute force the salt, and yes I read your 1000 comments on silver bullets).</p>
<p>2. As Mike Robinson put forward, typical bot behaviour can be characterized by either slow or fast responses. So putting a lowerbound on the timestamp is really a good idea.</p>
<p>3. The comment by Tarwin (instead of the warning message, remove a CAPTCHA) is extremely good, for multiple reasons: a) With javascript disabled, the form is still accessible. b) Bots see the CAPTCHA and leave. c) If a bot is so extremely clever to solve the CAPTCHA and your system, we can catch &#8216;em because they send back two solved challenges! d) It is gracefully downgrading; Annoying CAPTCHA tests now suppress only communication with annoying visitors <img src='http://15daysofjquery.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>4. It would be friendly to the visitor to tell him/her that the submission time has expired and provide a way to reload without losing form content, wouldn&#8217;t it?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: greg</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-17198</link>
		<author>greg</author>
		<pubDate>Fri, 16 Nov 2007 11:57:42 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-17198</guid>
					<description>ok, we tried this on our forms , but after about a week people figured out a way around this. :(</description>
		<content:encoded><![CDATA[<p>ok, we tried this on our forms , but after about a week people figured out a way around this. <img src='http://15daysofjquery.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /></p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jack</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-17240</link>
		<author>Jack</author>
		<pubDate>Fri, 16 Nov 2007 20:10:16 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-17240</guid>
					<description>greg,
I'll email you with a request for more info.</description>
		<content:encoded><![CDATA[<p>greg,<br />
I&#8217;ll email you with a request for more info.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Chris Wash</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-18413</link>
		<author>Chris Wash</author>
		<pubDate>Wed, 28 Nov 2007 23:25:04 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-18413</guid>
					<description>This strategy is known to the Java world as the Synchronizer Token pattern.  I didn't see you explicitly point this out, but what its main purpose in life is for is to make sure that redundant posts are not accepted - i.e., you can only submit one form-per-token that you get from the server.

This helps ensure a client's posts are synchronized with a new transaction on the server every time (consider submitting a payment) - hence the name.

Many Java web frameworks implement this sort of thing for you out of the box - skipping the JQuery step of inserting the hidden form field in dynamically and just automatically including the hidden field in the form for you.  This method requires no Javascript, and you can suggest it as a way to deal with clients that don't have Javascript.  The Javascript applies just an added level of obfuscation to the whole process and isn't really needed to achieve what you're looking for.

Another similar pattern to take a look at in terms of secure form processing is PRG (http://en.wikipedia.org/wiki/Post/Redirect/Get).</description>
		<content:encoded><![CDATA[<p>This strategy is known to the Java world as the Synchronizer Token pattern.  I didn&#8217;t see you explicitly point this out, but what its main purpose in life is for is to make sure that redundant posts are not accepted - i.e., you can only submit one form-per-token that you get from the server.</p>
<p>This helps ensure a client&#8217;s posts are synchronized with a new transaction on the server every time (consider submitting a payment) - hence the name.</p>
<p>Many Java web frameworks implement this sort of thing for you out of the box - skipping the JQuery step of inserting the hidden form field in dynamically and just automatically including the hidden field in the form for you.  This method requires no Javascript, and you can suggest it as a way to deal with clients that don&#8217;t have Javascript.  The Javascript applies just an added level of obfuscation to the whole process and isn&#8217;t really needed to achieve what you&#8217;re looking for.</p>
<p>Another similar pattern to take a look at in terms of secure form processing is PRG (http://en.wikipedia.org/wiki/Post/Redirect/Get).</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Null Reference &#187; CAPTCHA My Cat</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-35645</link>
		<author>Null Reference &#187; CAPTCHA My Cat</author>
		<pubDate>Wed, 14 May 2008 18:54:08 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-35645</guid>
					<description>[...] are various alternate solutions being banded around such as Client Side Javascript CAPTCHAs and verbal reasoning (via 37Signals) tests. The oddest so far has to be the image based effort by [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] are various alternate solutions being banded around such as Client Side Javascript CAPTCHAs and verbal reasoning (via 37Signals) tests. The oddest so far has to be the image based effort by [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: 25 Excellent Ajax Techniques and Examples - Six Revisions</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-38486</link>
		<author>25 Excellent Ajax Techniques and Examples - Six Revisions</author>
		<pubDate>Tue, 03 Jun 2008 03:58:15 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-38486</guid>
					<description>[...] 12. Safer Contact Forms Without CAPTCHAs [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] 12. Safer Contact Forms Without CAPTCHAs [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jeff</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-38585</link>
		<author>Jeff</author>
		<pubDate>Tue, 03 Jun 2008 18:50:27 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-38585</guid>
					<description>By saying this is bad because it requires javascript to be enabled is like saying, captcha is bad because it requires images to be enabled.  Javascript is a fundemental part of the web these days, and usually the ones with javascript disabled would be bots or hack attempts which shouldn't be accessing the site anyways.  There are times when I have used linux based text browsers, but that's only if I'm downloading files.  I say, if they don't have javascript enabled, too bad.</description>
		<content:encoded><![CDATA[<p>By saying this is bad because it requires javascript to be enabled is like saying, captcha is bad because it requires images to be enabled.  Javascript is a fundemental part of the web these days, and usually the ones with javascript disabled would be bots or hack attempts which shouldn&#8217;t be accessing the site anyways.  There are times when I have used linux based text browsers, but that&#8217;s only if I&#8217;m downloading files.  I say, if they don&#8217;t have javascript enabled, too bad.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: gabe</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-38870</link>
		<author>gabe</author>
		<pubDate>Thu, 05 Jun 2008 02:58:08 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-38870</guid>
					<description>JS runtimes: Rhino, Spidermonkey etc. could be used to eval the JS. Eg: appjet.com, XULRunner, Helma etc. 

Implementing the browser environment is a bit hard though even with the JS runtimes so you could get away with this for a while. Though a simple XULRunner or Firefox Extension app would have the environment to run anything in FF. 

I don't think I'm understandint this fully though. Are you just setting a cookie when the XHR is made, or are you sending back JS that needs to be interpreted. If its justa  cookie, then this isn't JS dependent, if its obfuscated JS, then yes the spammer would need a JS interpreter or some nifty regex. If you implement some browser specific environment features, then you could get even further as the spammer would need to implement those in their bot. Could get expensive enough you might have something for the masses... :)</description>
		<content:encoded><![CDATA[<p>JS runtimes: Rhino, Spidermonkey etc. could be used to eval the JS. Eg: appjet.com, XULRunner, Helma etc. </p>
<p>Implementing the browser environment is a bit hard though even with the JS runtimes so you could get away with this for a while. Though a simple XULRunner or Firefox Extension app would have the environment to run anything in FF. </p>
<p>I don&#8217;t think I&#8217;m understandint this fully though. Are you just setting a cookie when the XHR is made, or are you sending back JS that needs to be interpreted. If its justa  cookie, then this isn&#8217;t JS dependent, if its obfuscated JS, then yes the spammer would need a JS interpreter or some nifty regex. If you implement some browser specific environment features, then you could get even further as the spammer would need to implement those in their bot. Could get expensive enough you might have something for the masses&#8230; <img src='http://15daysofjquery.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Reponere &#187; Blog Archive &#187; 25 Excellent Ajax Techniques and Examples</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-39116</link>
		<author>Reponere &#187; Blog Archive &#187; 25 Excellent Ajax Techniques and Examples</author>
		<pubDate>Fri, 06 Jun 2008 18:01:53 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-39116</guid>
					<description>[...] 12. Safer Contact Forms Without CAPTCHAs [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] 12. Safer Contact Forms Without CAPTCHAs [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Safer Contact Forms Without CAPTCHAs &#124; Webmaster-Source</title>
		<link>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-39717</link>
		<author>Safer Contact Forms Without CAPTCHAs &#124; Webmaster-Source</author>
		<pubDate>Tue, 10 Jun 2008 11:17:29 +0000</pubDate>
		<guid>http://15daysofjquery.com/safer-contact-forms-without-captchas/11/#comment-39717</guid>
					<description>[...] Safer Contact Forms Without CAPTCHA’s [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Safer Contact Forms Without CAPTCHA’s [&#8230;]</p>
]]></content:encoded>
				</item>
</channel>
</rss>
