<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Obfuscate no more: why your email address should go au naturale</title>
	<atom:link href="http://jasonpriem.org/2009/05/stop-obfuscating-email/feed/" rel="self" type="application/rss+xml" />
	<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stop-obfuscating-email</link>
	<description></description>
	<lastBuildDate>Fri, 03 Feb 2012 01:46:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
	<item>
		<title>By: jason</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-20751</link>
		<dc:creator>jason</dc:creator>
		<pubDate>Mon, 03 Oct 2011 21:47:55 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-20751</guid>
		<description>A fair point, Wouter. People should be able to make their own informed choice about who has their email, and how it&#039;s displayed. It&#039;s probably not called for to make that choice for visitors.</description>
		<content:encoded><![CDATA[<p>A fair point, Wouter. People should be able to make their own informed choice about who has their email, and how it&#8217;s displayed. It&#8217;s probably not called for to make that choice for visitors.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wouter Bosgra</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-20747</link>
		<dc:creator>Wouter Bosgra</dc:creator>
		<pubDate>Mon, 03 Oct 2011 20:14:47 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-20747</guid>
		<description>I totally agree with this blogpost, and to my surprise most of my clients do as well - I guess spamfilters have evolved.

However there are always exceptions to the rule, and I&#039;m dealing with one now (which brought me here): Email-addresses posted in reactions by your visitors. These folks DO need to be protected against themselves. Except for bold people like &#039;A Guy Who Uses Gmail&#039; maybe.</description>
		<content:encoded><![CDATA[<p>I totally agree with this blogpost, and to my surprise most of my clients do as well &#8211; I guess spamfilters have evolved.</p>
<p>However there are always exceptions to the rule, and I&#8217;m dealing with one now (which brought me here): Email-addresses posted in reactions by your visitors. These folks DO need to be protected against themselves. Except for bold people like &#8216;A Guy Who Uses Gmail&#8217; maybe.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-18466</link>
		<dc:creator>Jonathan</dc:creator>
		<pubDate>Wed, 01 Jun 2011 22:10:33 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-18466</guid>
		<description>Another systemic flaw with JavaScript obfuscation techniques is that people end up lazily copying each other.

First, someone writes a &quot;good obfuscation&quot; program. Then, they blog about it to the world, make it into a downloadable plugin, or start selling it. Even a really clever obfuscation code, once slavishly copied by millions of web sites, will become worth the manpower and money for spammers to adjust their bots to intercept it.

If you are going to use JavaScript, at least put some effort in to make up your own completely unique code. Otherwise you are hanging the fruit lower than you need to.

And if you are one of the millions of developers who are fans of basic ROT13 email obfuscation, god help you.</description>
		<content:encoded><![CDATA[<p>Another systemic flaw with JavaScript obfuscation techniques is that people end up lazily copying each other.</p>
<p>First, someone writes a &#8220;good obfuscation&#8221; program. Then, they blog about it to the world, make it into a downloadable plugin, or start selling it. Even a really clever obfuscation code, once slavishly copied by millions of web sites, will become worth the manpower and money for spammers to adjust their bots to intercept it.</p>
<p>If you are going to use JavaScript, at least put some effort in to make up your own completely unique code. Otherwise you are hanging the fruit lower than you need to.</p>
<p>And if you are one of the millions of developers who are fans of basic ROT13 email obfuscation, god help you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jason</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-17465</link>
		<dc:creator>jason</dc:creator>
		<pubDate>Tue, 29 Mar 2011 06:17:38 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-17465</guid>
		<description>@Bobby:
&lt;blockquote&gt;
I don’t see how “they can figure out how your code works by looking at it” is a reasonable argument against javascript-powered address obfuscation.
&lt;/blockquote&gt;

Well, it&#039;s a reasonable argument because &quot;encoding&quot; an email with javascript is like sending a coded letter with the codebook in the same envelope. &lt;em&gt;You are including the instructions on how to decode what you sent.&lt;/em&gt; As you point out (and I point out in my post), there are plenty of ways to interpret javascript on the server, and then simply read the resulting page. There&#039;s no need for the spammer to &quot;look at the code personally.&quot;

Email aliasing is a cute idea, but what about the legit user who saves your alias in her address book, only to have her emails bounced later when you discard that address? Is your spam filter really so ineffective that you have to resort to this shell game to read your email?

@mark, I agree that &quot;a mix of different things combined with some robust javascript algorithm,&quot; plus a viable fallback for users with out js, plus a changing, time-based salting function...well, that&#039;s likely to keep you spammer-free, for the most part. For now. I envy you for the time you have to put into all of this.

But you haven&#039;t solved the problem that you still send spammers the codebook along with the code. Eventually, someone&#039;s going to write programs to read what you&#039;re sending them, and then your spaghetti-code, security-through-obscurity &quot;encryption&quot; will have to be revised. Surely this sort of pointless spy-vs-spy is not the best use we have for our time? 

As I wrote in the original post, I&#039;m not trying to throw the book at anyone here. Spam is a pain, I get it. And obfuscation can cut down on it.  My points are that:
&lt;ol&gt;
&lt;li&gt;The common, text-based techniques are kind of stupid.&lt;/li&gt;
&lt;li&gt;JS techniques can help, but they are &lt;em&gt;by their nature&lt;/em&gt; both vulnerable and inelegant.&lt;/li&gt;
&lt;li&gt;The future of the Web is in making things &lt;em&gt;more&lt;/em&gt; machine-readable, not less. Munging is on the wrong side of history.&lt;/li&gt;
&lt;/ol&gt;

If your spam filter doesn&#039;t work, by all means: do what you got to do. You&#039;ll get no condemnation from me. But I&#039;ve not heard anything yet to make me revise these three points.</description>
		<content:encoded><![CDATA[<p>@Bobby:</p>
<blockquote><p>
I don’t see how “they can figure out how your code works by looking at it” is a reasonable argument against javascript-powered address obfuscation.
</p></blockquote>
<p>Well, it&#8217;s a reasonable argument because &#8220;encoding&#8221; an email with javascript is like sending a coded letter with the codebook in the same envelope. <em>You are including the instructions on how to decode what you sent.</em> As you point out (and I point out in my post), there are plenty of ways to interpret javascript on the server, and then simply read the resulting page. There&#8217;s no need for the spammer to &#8220;look at the code personally.&#8221;</p>
<p>Email aliasing is a cute idea, but what about the legit user who saves your alias in her address book, only to have her emails bounced later when you discard that address? Is your spam filter really so ineffective that you have to resort to this shell game to read your email?</p>
<p>@mark, I agree that &#8220;a mix of different things combined with some robust javascript algorithm,&#8221; plus a viable fallback for users with out js, plus a changing, time-based salting function&#8230;well, that&#8217;s likely to keep you spammer-free, for the most part. For now. I envy you for the time you have to put into all of this.</p>
<p>But you haven&#8217;t solved the problem that you still send spammers the codebook along with the code. Eventually, someone&#8217;s going to write programs to read what you&#8217;re sending them, and then your spaghetti-code, security-through-obscurity &#8220;encryption&#8221; will have to be revised. Surely this sort of pointless spy-vs-spy is not the best use we have for our time? </p>
<p>As I wrote in the original post, I&#8217;m not trying to throw the book at anyone here. Spam is a pain, I get it. And obfuscation can cut down on it.  My points are that:</p>
<ol>
<li>The common, text-based techniques are kind of stupid.</li>
<li>JS techniques can help, but they are <em>by their nature</em> both vulnerable and inelegant.</li>
<li>The future of the Web is in making things <em>more</em> machine-readable, not less. Munging is on the wrong side of history.</li>
</ol>
<p>If your spam filter doesn&#8217;t work, by all means: do what you got to do. You&#8217;ll get no condemnation from me. But I&#8217;ve not heard anything yet to make me revise these three points.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mark</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-17464</link>
		<dc:creator>mark</dc:creator>
		<pubDate>Tue, 29 Mar 2011 03:25:12 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-17464</guid>
		<description>@Bobby
finally somebody that understands the problem :)

&quot;NEVER obfuscate&quot; can&#039;t be the solution - actually, its the problem.
Like Bobby said, a good obfuscation prevents 99% of all bots (and people behind it) to harvest your email.
simply because it needs manpower and money to manually adjust the bot to your algorithm.

of course something like &quot;me at domain dot com&quot; is stupid as hell. of course any parser in the world can translate hex-coded emails.
it has to be a mix of different things combined with some robust javascript algorithm and you are fine.
fallbacks for non js users included.
maybe even a changing algorithm (based on the time of day/month).

but NOT obfuscating is worse!</description>
		<content:encoded><![CDATA[<p>@Bobby<br />
finally somebody that understands the problem :)</p>
<p>&#8220;NEVER obfuscate&#8221; can&#8217;t be the solution &#8211; actually, its the problem.<br />
Like Bobby said, a good obfuscation prevents 99% of all bots (and people behind it) to harvest your email.<br />
simply because it needs manpower and money to manually adjust the bot to your algorithm.</p>
<p>of course something like &#8220;me at domain dot com&#8221; is stupid as hell. of course any parser in the world can translate hex-coded emails.<br />
it has to be a mix of different things combined with some robust javascript algorithm and you are fine.<br />
fallbacks for non js users included.<br />
maybe even a changing algorithm (based on the time of day/month).</p>
<p>but NOT obfuscating is worse!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bobby</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-6607</link>
		<dc:creator>Bobby</dc:creator>
		<pubDate>Sun, 20 Dec 2009 21:10:43 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-6607</guid>
		<description>I&#039;m extremely inexperienced in javascript and web programming in general, so forgive me if this sounds dumb, but what do you think about using a text field and emailing yourself whatever text the user has entered? Is there a way to make this method more impregnable (as far as maintaining email address secrecy is concerned)? I know it doesn&#039;t take much to write a bot that spams such a system with messages, but methinks this presents a more controllable environment.

On a different note, is there some way to use raw IP addresses instead of URLs that could throw a bot scanning for &quot;x&quot;@&quot;y&quot;.&quot;z&quot; off balance without overly confusing a desirable emailer?

Another possibility is the use of email aliasing. Maintain a single account for which you keep the direct address secret. Create an alias on an email server and use that alias &quot;au naturale&quot; in your sites, forwarding messages sent to it on to your central account. When you start to get too much spam through that alias, create a new one and repeat. Is this a reasonable solution, or am I misunderstanding some easy-to-foil step in this process?

Finally, a comment: I notice you keep mentioning that even the most complex obfuscation methods are easily discovered and routed if someone just looks at the code. Well... since there are so many possibilities, any spammer (hell, any programmer) would be hard-pressed to write a bot that could break them all by automation. A spammer would have to look at the code personally for each potential address to be certain of even (I&#039;m guessing) 50% success... why bother, when the spammer could just look at the email address directly as the browser renders it on the page? What I&#039;m trying to say is, I don&#039;t see how &quot;they can figure out how your code works by looking at it&quot; is a reasonable argument against javascript-powered address obfuscation. The goal of obfuscation is to necessitate a human individual&#039;s involvement in the identification of your email address with minimal confusion to that individual... methinks a sophisticated javascript obfuscation method accomplishes that goal.</description>
		<content:encoded><![CDATA[<p>I&#8217;m extremely inexperienced in javascript and web programming in general, so forgive me if this sounds dumb, but what do you think about using a text field and emailing yourself whatever text the user has entered? Is there a way to make this method more impregnable (as far as maintaining email address secrecy is concerned)? I know it doesn&#8217;t take much to write a bot that spams such a system with messages, but methinks this presents a more controllable environment.</p>
<p>On a different note, is there some way to use raw IP addresses instead of URLs that could throw a bot scanning for &#8220;x&#8221;@&#8221;y&#8221;.&#8221;z&#8221; off balance without overly confusing a desirable emailer?</p>
<p>Another possibility is the use of email aliasing. Maintain a single account for which you keep the direct address secret. Create an alias on an email server and use that alias &#8220;au naturale&#8221; in your sites, forwarding messages sent to it on to your central account. When you start to get too much spam through that alias, create a new one and repeat. Is this a reasonable solution, or am I misunderstanding some easy-to-foil step in this process?</p>
<p>Finally, a comment: I notice you keep mentioning that even the most complex obfuscation methods are easily discovered and routed if someone just looks at the code. Well&#8230; since there are so many possibilities, any spammer (hell, any programmer) would be hard-pressed to write a bot that could break them all by automation. A spammer would have to look at the code personally for each potential address to be certain of even (I&#8217;m guessing) 50% success&#8230; why bother, when the spammer could just look at the email address directly as the browser renders it on the page? What I&#8217;m trying to say is, I don&#8217;t see how &#8220;they can figure out how your code works by looking at it&#8221; is a reasonable argument against javascript-powered address obfuscation. The goal of obfuscation is to necessitate a human individual&#8217;s involvement in the identification of your email address with minimal confusion to that individual&#8230; methinks a sophisticated javascript obfuscation method accomplishes that goal.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rory</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-6587</link>
		<dc:creator>Rory</dc:creator>
		<pubDate>Mon, 14 Dec 2009 11:11:29 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-6587</guid>
		<description>Another thumbs up for gmail. On average a lottery win or african millionaire only gets through about once a month and to my knowledge (i do check my spam folder periodically), I have not missed any valid emails.</description>
		<content:encoded><![CDATA[<p>Another thumbs up for gmail. On average a lottery win or african millionaire only gets through about once a month and to my knowledge (i do check my spam folder periodically), I have not missed any valid emails.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carter Cole</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-6486</link>
		<dc:creator>Carter Cole</dc:creator>
		<pubDate>Fri, 13 Nov 2009 15:04:56 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-6486</guid>
		<description>and the fact that foo@cool.com auto links as a mailto: anchor really helps...</description>
		<content:encoded><![CDATA[<p>and the fact that <a href="mailto:foo@cool.com">foo@cool.com</a> auto links as a mailto: anchor really helps&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carter Cole</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-6485</link>
		<dc:creator>Carter Cole</dc:creator>
		<pubDate>Fri, 13 Nov 2009 15:04:03 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-6485</guid>
		<description>with gmail any address that has periods in it are ignored as well as anything after the plus (+) so

c.a.r.t.e.r@cartercole.com is the same as
carter.@cartercole.com is the same as
c.a.rter+spam@cartercole.com

so i can filter or send any form of my address to spam and know where it was harvested from

to get around this you could find addresses with gmail domain and remove everything after the + and the periods so its the clean version (unless the normal address has a period like carter.cole@dadada.com)</description>
		<content:encoded><![CDATA[<p>with gmail any address that has periods in it are ignored as well as anything after the plus (+) so</p>
<p><a href="mailto:c.a.r.t.e.r@cartercole.com">c.a.r.t.e.r@cartercole.com</a> is the same as<br />
<a href="mailto:carter.@cartercole.com">carter.@cartercole.com</a> is the same as<br />
<a href="mailto:c.a.rter+spam@cartercole.com">c.a.rter+spam@cartercole.com</a></p>
<p>so i can filter or send any form of my address to spam and know where it was harvested from</p>
<p>to get around this you could find addresses with gmail domain and remove everything after the + and the periods so its the clean version (unless the normal address has a period like <a href="mailto:carter.cole@dadada.com">carter.cole@dadada.com</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jason</title>
		<link>http://jasonpriem.org/2009/05/stop-obfuscating-email/comment-page-1/#comment-6142</link>
		<dc:creator>jason</dc:creator>
		<pubDate>Mon, 14 Sep 2009 00:02:04 +0000</pubDate>
		<guid isPermaLink="false">http://jasonpriem.com/?p=228#comment-6142</guid>
		<description>Elton, I agree with you that &quot;once the email is out there everyone can harvest it.&quot;  In fact, my point is that we should be trying to make it easy to get.  Most obfuscations challenge users more than spambots.

I also agree that, for the time being, Javascript-based obfuscation holds the most promise.  It&#039;s not a silver bullet, though, as I discuss in my post.  The ATG product you mentioned (and &lt;a href=&quot;http://www.pjapplications.com/software-antispam-mailto-tag-generator-email-obfuscator.php&quot; rel=nofollow rel=&quot;nofollow&quot;&gt;sell on your site&lt;/a&gt; as a downloadable exe) is a good example.  Let&#039;s take a look at what ATG cranks out:
&lt;code&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function SLMEJMBF(A){
  var S = String.fromCharCode(109,97,105,108,116,111,58,116,101,115,»
116,64,101,120,97,109,112,108,101,46,99,111,109);
  A.href = S;
}
&lt;/script&gt;
&lt;a href=&quot;#&quot; onmouseover=&quot;SLMEJMBF(this);&quot; onfocus=&quot;SLMEJMBF(this);&quot;&gt;mail example&lt;/a&gt;
&lt;/code&gt;

For starters, if the client has javascript disabled, it breaks completely.  That means tough luck, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/722&quot; rel=&quot;nofollow&quot;&gt;NoScript&lt;/a&gt; user: no email for you.  This isn&#039;t an insurmountable problem, though; check out &lt;a href=&quot;http://pipwerks.com/2009/02/01/obfuscating-email-addresses-revisited/&quot; rel=&quot;nofollow&quot;&gt;Philip Hutchison&#039;s&lt;/a&gt; gracefully-degrading script, for example.

Second, the &quot;encryption&quot; you use is pretty trivial.  You rely on Javascript&#039;s &quot;fromCharCode&quot; method to read the munged address--&lt;em&gt;so can the harvester&lt;/em&gt;.  I added a simple function to my &lt;a href=&quot;http://jasonpriem.com/obfuscation-decoder&quot; rel=&quot;nofollow&quot;&gt;de-obfuscator demo&lt;/a&gt; to show how easy this is (it&#039;s example 11).

If I can break this munge with a 10-line function in a few minutes, trust me: someone else already has. Granted, this gets a lot harder to beat if you get just a little trickier; for instance, you might try breaking the address down into 10 strings and then concatenate them out of order--now a simple regex isn&#039;t enough.  

But the basic problem hasn&#039;t gone away: your server dishes out your unencrypted Javascript to anyone who wants it, no questions asked.  That makes it a fundamentally bad place to put secrets.

Thanks for your comment, and good luck with ATG!</description>
		<content:encoded><![CDATA[<p>Elton, I agree with you that &#8220;once the email is out there everyone can harvest it.&#8221;  In fact, my point is that we should be trying to make it easy to get.  Most obfuscations challenge users more than spambots.</p>
<p>I also agree that, for the time being, Javascript-based obfuscation holds the most promise.  It&#8217;s not a silver bullet, though, as I discuss in my post.  The ATG product you mentioned (and <a href="http://www.pjapplications.com/software-antispam-mailto-tag-generator-email-obfuscator.php" rel=nofollow rel="nofollow">sell on your site</a> as a downloadable exe) is a good example.  Let&#8217;s take a look at what ATG cranks out:<br />
<code><br />
&lt;script type=&quot;text/javascript&quot;&gt;<br />
function SLMEJMBF(A){<br />
  var S = String.fromCharCode(109,97,105,108,116,111,58,116,101,115,»<br />
116,64,101,120,97,109,112,108,101,46,99,111,109);<br />
  A.href = S;<br />
}<br />
&lt;/script&gt;<br />
&lt;a href=&quot;#&quot; onmouseover=&quot;SLMEJMBF(this);&quot; onfocus=&quot;SLMEJMBF(this);&quot;&gt;mail example&lt;/a&gt;<br />
</code></p>
<p>For starters, if the client has javascript disabled, it breaks completely.  That means tough luck, <a href="https://addons.mozilla.org/en-US/firefox/addon/722" rel="nofollow">NoScript</a> user: no email for you.  This isn&#8217;t an insurmountable problem, though; check out <a href="http://pipwerks.com/2009/02/01/obfuscating-email-addresses-revisited/" rel="nofollow">Philip Hutchison&#8217;s</a> gracefully-degrading script, for example.</p>
<p>Second, the &#8220;encryption&#8221; you use is pretty trivial.  You rely on Javascript&#8217;s &#8220;fromCharCode&#8221; method to read the munged address&#8211;<em>so can the harvester</em>.  I added a simple function to my <a href="http://jasonpriem.com/obfuscation-decoder" rel="nofollow">de-obfuscator demo</a> to show how easy this is (it&#8217;s example 11).</p>
<p>If I can break this munge with a 10-line function in a few minutes, trust me: someone else already has. Granted, this gets a lot harder to beat if you get just a little trickier; for instance, you might try breaking the address down into 10 strings and then concatenate them out of order&#8211;now a simple regex isn&#8217;t enough.  </p>
<p>But the basic problem hasn&#8217;t gone away: your server dishes out your unencrypted Javascript to anyone who wants it, no questions asked.  That makes it a fundamentally bad place to put secrets.</p>
<p>Thanks for your comment, and good luck with ATG!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

