<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>SecureSEO</title>
	<link>http://www.secureseo.com/blog</link>
	<description>Secure search engine optimization</description>
        <image>
           <link>http://www.secureseo.com/blog</link>
           <url>http://ha.ckers.org/images/hackers_rss.jpg</url> 
	</image>
	<pubDate>Wed, 14 Oct 2009 20:25:22 +0000</pubDate>
 
	<language>en</language>
		      <item>
		<title>SEOktoberfest</title>
		<link>http://www.secureseo.com/blog/2009/10/14/seoktoberfest/</link>
		<comments>http://www.secureseo.com/blog/2009/10/14/seoktoberfest/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 20:25:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2009/10/14/seoktoberfest/</guid>
		<description><![CDATA[Well, I was planning on releasing tons of information upon my return from SEOktoberfest, but frankly, I was sworn to secrecy.  So you&#8217;ll have to know that I walked away with tons of knowledge, but that you&#8217;re getting none of it.  I know, I&#8217;m an ass!  But anyway, for my part of [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I was planning on releasing tons of information upon my return from SEOktoberfest, but frankly, I was sworn to secrecy.  So you&#8217;ll have to know that I walked away with tons of knowledge, but that you&#8217;re getting none of it.  I know, I&#8217;m an ass!  But anyway, for my part of it, it was a lot of fun.  I took my knowledge of security and applied it to the real blackhat way of thinking of SEO - not greyhat, real blackhat.  I was told it was a success, but in reality, I think I could have done a much better job.  Thinking about it in retrospect, I could have tailored my speech to ways of thinking of traffic in a much more whitehat way, but still apply it to SEO.  Alas, maybe next year!</p>
<p>The fun never stopped though.  I met a lot of great people - German Playmates - had a massage for the first time ever - and in general it was great to see Germany through the eyes of a VIP.  Huge thanks to everyone I met there.  There were lots of really amazing and helpful people.  Not the least of which were guys like <a href="http://www.brentcsutoras.com/2009/10/12/seoktoberfest-2009-prost/">Brent Csutoras</a>, <a href="http://seoblackhat.com/2009/10/02/the-journey-home-an-seoktoberfest-wrap-up/">Quadzilla</a> and <a href="http://www.mediadonis.net/?p=425">Mediadonis</a>.  There&#8217;s even <a href="http://www.mediadonis.net/?p=426">a movie too</a> which I am suspiciously almost entirely absent from.  I promise I was there - but I ended up talking to people almost the entire time.  Now you&#8217;re thinking either I&#8217;ve lost my libido completely, or those guys were really that interesting to talk to.  I tend to believe it&#8217;s the ladder, personally!  Thanks to everyone for putting it on!</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2009/10/14/seoktoberfest/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>eBay Domain Split</title>
		<link>http://www.secureseo.com/blog/2009/09/14/ebay-domain-split/</link>
		<comments>http://www.secureseo.com/blog/2009/09/14/ebay-domain-split/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 02:14:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2009/09/14/ebay-domain-split/</guid>
		<description><![CDATA[I&#8217;ve worked in the industry a long long time, and so when I joined eBay many years ago and they told me they wanted to split the view-item pages in half to prevent fraud, I was pretty sure at that point that I&#8217;d have to quit my job or be fired.  You see, yelling [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve worked in the industry a long long time, and so when I joined eBay many years ago and they told me they wanted to split the view-item pages in half to prevent fraud, I was pretty sure at that point that I&#8217;d have to quit my job or be fired.  You see, yelling the Senior VP that the idea is totally full of holes from a technical perspective, when they&#8217;ve already committed to the project well before you were hired is pretty much the same as taking a suicide pill.  Thankfully, after a few weeks of heavy duty research I was able to come in armed with enough paperwork to choke and elephant that proved that approx 22% of listings would be messed up in some way or another once that project launched.  Thankfully they saw it for what it was - a bad idea.</p>
<p>However, I eventually left eBay a few years later and bad ideas prevailed, and yes, they did end up launching the project anyway.  Even as my friends who were still there at eBay told me that they were doing it, I was warning them what a bad idea it was.  And now <a href="http://forums.ebay.com/db1/topic/Auction-Listings/Test-Of-A/1000750126&#038;start=0">they know why it was such a bad idea</A>.  Splitting the domains is bad in so many ways, I can hardly count them.  It&#8217;s bad from a security perspective, because it breaks printing for those people who want to print out their auctions as proof of what they purchased.  This is important because auctions change because images are hosted by third parties.</p>
<p>It&#8217;s bad from an SEO perspective because the content lives on separate domains (ebaydesc.com).  It&#8217;s bad from a UI perspective because JavaScript isn&#8217;t particularly good about dealing with domains.  It&#8217;s bad for people who try to suppress portions of content through the use of browser plugins (think Noscript and Request Policy) and on and on&#8230;   I hate to say this, but I really did tell them so!  To all those eBay fans out there who are hating this all I can say is I did my best to fight for you on this one!</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2009/09/14/ebay-domain-split/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>SEOktoberfest is Quickly Approaching</title>
		<link>http://www.secureseo.com/blog/2009/09/11/seoktoberfest-is-quickly-approaching/</link>
		<comments>http://www.secureseo.com/blog/2009/09/11/seoktoberfest-is-quickly-approaching/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 15:48:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2009/09/11/seoktoberfest-is-quickly-approaching/</guid>
		<description><![CDATA[The next two weeks are going to be crazy - off to Intel to speak at their private conference in Oregon.  But possibly more interesting I got a personal invite to speak at SEOktoberfest in Munich on &#8220;SEOwning the Internet.&#8221;  This speech is primarily around blackhat techniques for improving page rank.  Yes, [...]]]></description>
			<content:encoded><![CDATA[<p>The next two weeks are going to be crazy - off to Intel to speak at their private conference in Oregon.  But possibly more interesting I got a personal invite to speak at <a href="http://www.mediadonis.net/?p=410">SEOktoberfest</a> in Munich on &#8220;SEOwning the Internet.&#8221;  This speech is primarily around blackhat techniques for improving page rank.  Yes, I do talk about whitehat and blackhat techniques both, because I think knowing both is extremely important, even if your business can&#8217;t afford the risks and ramifications of getting shut down by the likes of Google, Yahoo, Bing.  Trust, me, we don&#8217;t advocate the use of blackhat techniques for any legitimate organization - but I still find it personally interesting.</p>
<p>One of the things I&#8217;m going to be discussing in my presentation is how Google employees manually look for spam text and try to prevent the search engine from indexing sites that appear to be abusing their search engines.  I managed to find, read and digest some of the more interesting techniques that their human review team does to try to prevent spam, and drawing on more than a decade of browser and web application security, I found a way to avoid their prying eyes.  Because people are paying a lot of money to go to SEOktoberfest, they get the first look into this, but I&#8217;ll release the details of how it works upon my return.  Until then&#8230;</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2009/09/11/seoktoberfest-is-quickly-approaching/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>Fixing Multi-Sub-Domain SEO Dillusion</title>
		<link>http://www.secureseo.com/blog/2009/09/11/fixing-multi-sub-domain-seo-dillusion/</link>
		<comments>http://www.secureseo.com/blog/2009/09/11/fixing-multi-sub-domain-seo-dillusion/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 15:37:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2009/09/11/fixing-multi-sub-domain-seo-dillusion/</guid>
		<description><![CDATA[Some friends of mine work for a company that have an ASP model service that resides in JavaScript and HTML space on their customer&#8217;s websites.  They have a problem though - because their content technically resides on another subdomain, and is just included in JavaScript via an iframe, it dilutes a lot of the [...]]]></description>
			<content:encoded><![CDATA[<p>Some friends of mine work for a company that have an ASP model service that resides in JavaScript and HTML space on their customer&#8217;s websites.  They have a problem though - because their content technically resides on another subdomain, and is just included in JavaScript via an iframe, it dilutes a lot of the link juice for their clients.  Try as they might, there&#8217;s really no good way to force the two subdomains into one simply by creating lots of links to one another or any other such nonsense.</p>
<p>So the obvious next step is to bring the two together programmatically.  We started by looking at how you could use a proxy to combine the two.  You put a proxy on www.abc.com that says whenever you see something pointing to www.abc.com/xyz go pull the equivalent content from www.xyz.com.  This gets trickier though, because in this case www.xyz.com is using content caching networks.  Alas, another headache.  Now they have to use DNS to go and find otu where www.xyz.com is - and they can&#8217;t cache that DNS request because who knows if that content caching network will go offline.</p>
<p>I got into some early conversations with F5 about this, and there&#8217;s a possibility that they may actually want to get into this game.  So here&#8217;s why it doesn&#8217;t currently work and why it may in the future.  Right now F5 uses &#8220;pools&#8221; of IP addresses to represent a single host name.  In this case instead of a hostname to a pool of IP address mapping, you need a URL to a hostname mapping.  Using something similar to how they do load balancing uptime detection they instead need to identify where the host www.xyz.com lives.  Now you may be asking yourselves where does the uptime detection come into play?  Well, thankfully in this case, it doesn&#8217;t need to be anything more than what is currently happening.</p>
<p>Because the F5 is making outbound requests and getting answers back it automatically knows if the site is down or slow, by virtue of the fact that it isn&#8217;t getting it&#8217;s responses back in time.  So it can automatically adjust and move over to the next IP address by making another DNS request.  In this way, both subdomains end up on the same domain from a user&#8217;s perspective - and more importantly, from the search engine&#8217;s perspective.  If you don&#8217;t have time to wait the months or years it might take to get this built into the F5, or you can&#8217;t afford an F5, look at hacking up a CGI proxy.  That&#8217;s probably your next best bet.</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2009/09/11/fixing-multi-sub-domain-seo-dillusion/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>List of HTTP Headers</title>
		<link>http://www.secureseo.com/blog/2009/09/08/list-of-http-headers/</link>
		<comments>http://www.secureseo.com/blog/2009/09/08/list-of-http-headers/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 22:33:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2009/09/08/list-of-http-headers/</guid>
		<description><![CDATA[I recently polled a log file we had created containing north of half a million user requests.  It&#8217;s a very interesting log, but it&#8217;s also extremely difficult to parse through the data in any meaningful way without the use of relational databases to make sense of all the data.  However, one slice of [...]]]></description>
			<content:encoded><![CDATA[<p>I recently polled a log file we had created containing north of half a million user requests.  It&#8217;s a very interesting log, but it&#8217;s also extremely difficult to parse through the data in any meaningful way without the use of relational databases to make sense of all the data.  However, one slice of the data is to look at just the HTTP headers themselves.  These are the Apache sanitized versions, and not the raw data, but you can see quickly that there are some interesting patterns here, lots of typos in malformed robots, hackers and so on:</p>
<p>
<blockquote>   1 HTTP_ACCEPTS<br />
   1 HTTP_ACCEPT_APPLICATION<br />
   1 HTTP_ACCEPT_FONT<br />
   1 HTTP_ACCPROXYWS<br />
   1 HTTP_ACUNETIX_PRODUCT<br />
   1 HTTP_ACUNETIX_SCANNING_AGREEMENT<br />
   1 HTTP_ACUNETIX_USER_AGREEMENT<br />
   1 HTTP_ADCENTRIA_IM<br />
   1 HTTP_ADCENTRIA_IM_S<br />
   1 HTTP_CONNECTIONS<br />
   1 HTTP_CONTENT_ENCODING<br />
   1 HTTP_CONTENT_TRANSFER_ENCODING<br />
   1 HTTP_ENCODING_VERSION<br />
   1 HTTP_EOF<br />
   1 HTTP_EVE_TRUSTED<br />
   1 HTTP_EVE_TRUSTME<br />
   1 HTTP_EXPIRES<br />
   1 HTTP_EXTENSION<br />
   1 HTTP_FORWARDED_FOR_IP<br />
   1 HTTP_HTTP_FORWARDED<br />
   1 HTTP_HTTP_FORWARDED_FOR<br />
   1 HTTP_HTTP_FORWARDED_FOR_IP<br />
   1 HTTP_HTTP_PROXY_CONNECTION<br />
   1 HTTP_HTTP_VIA<br />
   1 HTTP_HTTP_X_FORWARDED<br />
   1 HTTP_IDENT_USER<br />
   1 HTTP_JOPSPFFRZP<br />
   1 HTTP_KVWJPTJQFH<br />
   1 HTTP_MATERNA_COUNTRY<br />
   1 HTTP_MINE<br />
   1 HTTP_MKSIHRFHUI<br />
   1 HTTP_NONNECTION<br />
   1 HTTP_NPFREFR<br />
   1 HTTP_N_FORWARDED_FOR<br />
   1 HTTP_PNP<br />
   1 HTTP_PQ_VERSION<br />
   1 HTTP_PYFGOEWUEQ<br />
   1 HTTP_REMOTE_ADDR<br />
   1 HTTP_REMOTE_HOST<br />
   1 HTTP_REMOVED_HEADER<br />
   1 HTTP_SOAPACTION<br />
   1 HTTP_TYPE<br />
   1 HTTP_XCCEPT_ENCODING<br />
   1 HTTP_XUBNHKKQFV<br />
   1 HTTP_X_ACCEPT_ENCODING<br />
   1 HTTP_X_APN_ID<br />
   1 HTTP_X_BMI_CA_UPSDOMAIN<br />
   1 HTTP_X_CATEGORY<br />
   1 HTTP_X_CF_NODEBUG<br />
   1 HTTP_X_COOL_JOBS_CONTACT<br />
   1 HTTP_X_DHL_USER<br />
   1 HTTP_X_DISCARD<br />
   1 HTTP_X_FINCH_IDENTITY<br />
   1 HTTP_X_FORWARD_FOR<br />
   1 HTTP_X_GGSNIP<br />
   1 HTTP_X_GOOGLE_COUNTRY<br />
   1 HTTP_X_HSP_IDENTITY<br />
   1 HTTP_X_I2P_DESTB32<br />
   1 HTTP_X_I2P_DESTB64<br />
   1 HTTP_X_IMSI<br />
   1 HTTP_X_KIELIKOODI<br />
   1 HTTP_X_LOOP_103_1031486416<br />
   1 HTTP_X_LOOP_16205_1249272000<br />
   1 HTTP_X_NAS_IP<br />
   1 HTTP_X_NOKIA_MSISDN<br />
   1 HTTP_X_NOKIA_MUSICSHOP<br />
   1 HTTP_X_NOKIA_PREPAIDIND<br />
   1 HTTP_X_POLICY<br />
   1 HTTP_X_PROXY_ISSUES_CONTACT<br />
   1 HTTP_X_PTAG<br />
   1 HTTP_X_SCANSAFE<br />
   1 HTTP_X_SCANSAFE_DATA<br />
   1 HTTP_X_SGSNIP<br />
   1 HTTP_X_SGSN_IP<br />
   1 HTTP_X_SHINDIG_DOS<br />
   1 HTTP_X_SKYFIRE_CLIENT_IP<br />
   1 HTTP_X_SKYFIRE_CLIENT_PLATFORM<br />
   1 HTTP_X_SKYFIRE_CLIENT_VERSION<br />
   1 HTTP_X_SKYFIRE_FORWARDED_FOR<br />
   1 HTTP_X_SKYFIRE_USER_ID<br />
   1 HTTP_X_SOPHOS_WSA_CLIENTIP<br />
   1 HTTP_X_SOPHOS_WSA_USER<br />
   1 HTTP_X_SOURCE_ID<br />
   1 HTTP_X_S_UNIQUE_ID<br />
   1 HTTP_X_UP_BEARER_TYPE<br />
   1 HTTP_X_UP_CALLING_LINE_ID<br />
   1 HTTP_X_UP_TELSTRA_UID<br />
   1 HTTP_X_USERNAME<br />
   1 HTTP_X_WAP_CLIENTID<br />
   1 HTTP_X_WAP_CLIENT_SDU_SIZE<br />
   1 HTTP_X_WAP_GATEWAY<br />
   1 HTTP_X_WAP_MSISDN<br />
   1 HTTP_X_WAP_NETWORK_CLIENT_IP<br />
   1 HTTP_X_WAP_SESSION_ID<br />
   1 HTTP_X_YAHOO_PROXY<br />
   1 HTTP_YWZTJJBZTR<br />
   1 HTTP__EEP_ALIVE<br />
   1 HTTP__HTTP_EVE_TRUSTED<br />
   2 HTTP_ACROBAT_VERSION<br />
   2 HTTP_BEARER_INDICATION<br />
   2 HTTP_CADCEKPASS<br />
   2 HTTP_CALLED_STATION_ID<br />
   2 HTTP_COS_NAME<br />
   2 HTTP_GRANOLA<br />
   2 HTTP_HTTP<br />
   2 HTTP_REFER<br />
   2 HTTP_SWF_HDR_MSG<br />
   2 HTTP_USERIP<br />
   2 HTTP_XID<br />
   2 HTTP_X_ACCEPT_PROGRESSIVE<br />
   2 HTTP_X_ASID<br />
   2 HTTP_X_GACELA_PROXY_ID<br />
   2 HTTP_X_HD_BC<br />
   2 HTTP_X_IGOOGLE_REQUEST<br />
   2 HTTP_X_LEOTRACE_EXTENSION_USER_ID<br />
   2 HTTP_X_MMS_PREPAID_FLAG<br />
   2 HTTP_X_RATPROXY_LOOP<br />
   2 HTTP_X_SSL_REQUEST<br />
   2 HTTP_X_S_DISPLAY_INFO<br />
   2 HTTP_X_TICKCOUNT<br />
   2 HTTP_X_UP_BEAR_TYPE<br />
   2 HTTP_X_XUTHENTICATED_USER<br />
   3 HTTP_19_PROFILE<br />
   3 HTTP_ACCESS_KEY<br />
   3 HTTP_HARMONY_TESTXX<br />
   3 HTTP_HTTP_CLIENT_IP<br />
   3 HTTP_OPT<br />
   3 HTTP_WHO<br />
   3 HTTP_X_FEEDLY<br />
   3 HTTP_X_FORWARDED_SERVER<br />
   3 HTTP_X_MSP_MSISDN<br />
   3 HTTP_X_OPENPGP_AGENT<br />
   3 HTTP_X_OPENPGP_DIGEST_ALGO<br />
   3 HTTP_X_OPENPGP_SIG<br />
   3 HTTP_X_OPENPGP_SIG_FIELDS<br />
   3 HTTP_X_OPENPGP_TYPE<br />
   3 HTTP_X_OPENPGP_VERSION<br />
   3 HTTP_X_SKYFIRE_SCREEN<br />
   3 HTTP_X_SKYFIRE_VERSION<br />
   3 HTTP_X_SWEB_DATA<br />
   3 HTTP_X_USER_TRACKING<br />
   3 HTTP_X_WELLO_VERSION<br />
   4 HTTP_ACCEPT_ENCODE<br />
   4 HTTP_ACCEPT_RUBBISH_<br />
   4 HTTP_ACCEPT_XNCODING<br />
   4 HTTP_AGENT<br />
   4 HTTP_BACKEND<br />
   4 HTTP_BEWOOPI_PRX_ENABLED<br />
   4 HTTP_DRM_VERSION<br />
   4 HTTP_HTTP_X_FORWARDED_FOR<br />
   4 HTTP_MSISDN<br />
   4 HTTP_NPSKIPPROCESSING<br />
   4 HTTP_UA_LANGUAGE<br />
   4 HTTP_XXXXXXXXXX<br />
   4 HTTP_X_AOL_AUTH<br />
   4 HTTP_X_DCMGUID<br />
   4 HTTP_X_EGZ<br />
   4 HTTP_X_FIRELOGGER<br />
   4 HTTP_X_JPHONE_COLOR<br />
   4 HTTP_X_JPHONE_DISPLAY<br />
   4 HTTP_X_JPHONE_MSNAME<br />
   4 HTTP_X_JPHONE_REGION<br />
   4 HTTP_X_JPHONE_SMAF<br />
   4 HTTP_X_MSP_AG<br />
   4 HTTP_X_MSP_CLID<br />
   4 HTTP_X_MSP_SESSION_ID<br />
   4 HTTP_X_MSP_WAP_CLIENT_ID<br />
   4 HTTP_X_MSTMP<br />
   4 HTTP_X_OPERATOR_DOMAIN<br />
   4 HTTP_X_ORANGE_ID<br />
   4 HTTP_X_ORANGE_ROAMING<br />
   4 HTTP_X_OS_PREFS<br />
   4 HTTP_X_PROCESSANDTHREAD<br />
   4 HTTP_X_SKYFIRE_PHONE<br />
   4 HTTP_X_TINYPROXY<br />
   4 HTTP_X_UP_SUBSCRIBER_COS<br />
   4 HTTP_X_UP_UPLINK<br />
   5 HTTP_MIME_VERSION<br />
   5 HTTP_WSER_AGENT<br />
   5 HTTP_X_CLIENTIP<br />
   5 HTTP_X_FCCKV2<br />
   5 HTTP_X_FILTERED<br />
   5 HTTP_X_KRONOS_SECURE_CLIENT_CONNECTION<br />
   5 HTTP_X_MDS_FORWARDED_FOR<br />
   5 HTTP_X_PL_X<br />
   5 HTTP_X_REQUEST_IDENTIFIER<br />
   5 HTTP_X_UP_TPD_ELID<br />
   5 HTTP_X_WAP_PERSONALIZATION<br />
   5 HTTP_X_WAP_PROFILE_DIFF<br />
   6 HTTP_APN<br />
   6 HTTP_RJUEPSSUOS<br />
   6 HTTP_X_LOGDIGGER<br />
   7 HTTP_NNCOECTION<br />
   7 HTTP_NROXY_CONNECTION<br />
   7 HTTP_ORACLE_ECID<br />
   7 HTTP_X_NOKIA_WIA_ACCEPT_ORIGINAL<br />
   7 HTTP___________<br />
   8 HTTP_DEPTH<br />
   8 HTTP_FRONT_END_HTTPS<br />
   8 HTTP_X_ACCOUNT_ID<br />
   8 HTTP_X_AUTHENTICATED_USER<br />
   8 HTTP_X_FCCK<br />
   8 HTTP_X_JPHONE_UID<br />
   8 HTTP_X_LOOP_2897_1250000363<br />
   8 HTTP_X_NOKIA_GID<br />
   8 HTTP_X_PALM_CARRIER<br />
   8 HTTP_X_PROFILE_ID<br />
   8 HTTP_X_UP_FORWARDED_FOR<br />
   9 HTTP_AXXEPT_ENCODING<br />
   9 HTTP_DLWEB<br />
   9 HTTP_MAX_SIZE<br />
   9 HTTP_USERNAME<br />
   9 PATH_INFO<br />
   9 PATH_TRANSLATED<br />
   9 REDIRECT_REQUEST_METHOD<br />
  10 HTTP_AAAAAAAAAAAAAAA<br />
  10 HTTP_X_NOKIA_MAXDOWNLINKBITRATE<br />
  10 HTTP_X_NOKIA_MAXUPLINKBITRATE<br />
  10 HTTP_X_UP_DEVCAP_ACCEPT_LANGUAGE<br />
  10 HTTP_X_UP_DEVCAP_IMMED_ALERT<br />
  10 HTTP_X_UP_DEVCAP_MSIZE<br />
  10 HTTP_X_WISP<br />
  11 HTTP_MUMMEL<br />
  11 HTTP_PORT<br />
  11 HTTP_PROTOCOL<br />
  11 HTTP_TM_USER_MSISDN<br />
  11 HTTP_X_WAP_PROXY_COOKIE<br />
  12 HTTP_X_EBO_UA<br />
  12 HTTP_X_UP_DEVCAP_CHARSET<br />
  12 HTTP_X_UP_DEVCAP_SMARTDIALING<br />
  12 HTTP_X_UP_DEVCAP_ZONE<br />
  13 HTTP_X_COMPRESSION<br />
  14 HTTP_ALLOWAUTOREDIRECT<br />
  14 HTTP_CNEONCTION<br />
  14 HTTP_CONTENTTYPE<br />
  14 HTTP_KEEPALIVE<br />
  14 HTTP_OAS_IP<br />
  14 HTTP_X_CACHEBUSTER<br />
  15 HTTP_X_GWA_METHOD<br />
  15 HTTP_X_NOKIA_CONNECTION_MODE<br />
  15 HTTP_X_REAL_IP<br />
  16 HTTP_A_IM<br />
  16 HTTP_DWEB_CLIENT<br />
  16 HTTP_X_D_FORWARDER<br />
  16 HTTP_X_MSISDN<br />
  16 HTTP_X_NOKIA_LOCALSOCKET<br />
  16 HTTP_X_NOKIA_REMOTESOCKET<br />
  17 HTTP_NOVINET<br />
  17 HTTP_WEFERER<br />
  17 HTTP_X_XXXXX<br />
  17 redirect-carefully<br />
  18 HTTP_AVAIL_DICTIONARY<br />
  18 HTTP_WSHOST<br />
  18 HTTP_WSIP<br />
  18 HTTP_________________<br />
  19 HTTP_OSUVA_ISTUNTOID<br />
  19 HTTP_X_XXXXXXXX<br />
  20 HTTP_ACCEPT_ENCODXNG<br />
  21 HTTP_X_NOKIA_BEARER<br />
  21 HTTP_X_NOKIA_IPADDRESS<br />
  22 HTTP_X_SDCH<br />
  22 HTTP_X_UP_DEVCAP_CC<br />
  22 HTTP_X_UP_DEVCAP_QVGA<br />
  23 HTTP_X_CNECTION<br />
  23 HTTP_X_UP_DEVCAP_MULTIMEDIA<br />
  23 HTTP_X_UP_DEVCAP_SCREENCHARS<br />
  23 HTTP_X_UP_DEVCAP_SOFTKEYSIZE<br />
  23 HTTP_X_UP_DEVCAP_TITLEBAR<br />
  24 HTTP_X_DEVICE_ACCEPT_CHARSET<br />
  24 HTTP_X_UP_DEVCAP_MAX_PDU<br />
  25 HTTP_X_DEVICE_ACCEPT_ENCODING<br />
  25 HTTP_X_FEEDBURNER_URI<br />
  25 HTTP_X_XXXXXXXXXXXXXXXXX<br />
  27 HTTP_X_NOKIA_GATEWAY_ID<br />
  27 HTTP_X_REQUESTED_WITH<br />
  28 HTTP_X_SINA_PROXYUSER<br />
  29 HTTP_REALIP<br />
  29 HTTP_X_REALIP<br />
  29 HTTP_X_VIRTUAL_IP<br />
  30 HTTP_IF_NONE_MATCH<br />
  30 HTTP_X_DEVICE_ACCEPT<br />
  31 HTTP_REFRESH_CACHE<br />
  31 HTTP_X_MOBILE_GATEWAY<br />
  31 HTTP_X_NETWORK_TYPE<br />
  31 HTTP_X_NOVARRA_DEVICE_TYPE<br />
  32 HTTP_WAP_CONNECTION<br />
  32 HTTP_XXXXXXX<br />
  34 HTTP_SSSSSSS<br />
  35 HTTP_X_UP_DEVCAP_ISCOLOR<br />
  35 HTTP_X_XORWARDED_FOR<br />
  36 PHP_AUTH_PW<br />
  36 PHP_AUTH_USER<br />
  37 HTTP_SURROGATE_CAPABILITY<br />
  37 HTTP_X_AUDIOCAST_UDPPORT<br />
  39 HTTP_ACCEPT_ENCODIND<br />
  39 HTTP_UA_COLOR<br />
  39 HTTP_UA_PIXELS<br />
  39 HTTP_UA_VOICE<br />
  39 HTTP_X_P2P_PEERDIST<br />
  40 HTTP_CLIENTID<br />
  40 HTTP_UA_OS<br />
  40 HTTP_X_NETWORK_INFO<br />
  41 HTTP_CONEX_O<br />
  41 REDIRECT_SERVER_SOFTWARE<br />
  42 HTTP_X_SLIPSTREAM_USERNAME<br />
  42 HTTP_X_UP_DEVCAP_NUMSOFTKEYS<br />
  44 HTTP_X_VIA<br />
  45 HTTP_ICY_METADATA<br />
  45 HTTP_X_PSP_BROWSER<br />
  45 HTTP_X_PSP_PRODUCTCODE<br />
  46 HTTP_TRANSLATE<br />
  46 HTTP_X_SAUCER<br />
  46 HTTP_X_TEACUP<br />
  47 HTTP_FORWARDED<br />
  47 HTTP_ORIGIN<br />
  47 HTTP_X_FORWARDED_HOST<br />
  47 HTTP_X_UP_SUBNO<br />
  52 HTTP_X_PS3_BROWSER<br />
  53 HTTP_X_UP_DEVCAP_SCREENDEPTH<br />
  53 HTTP_X_UP_DEVCAP_SCREENPIXELS<br />
  58 HTTP_X_NAI_ID<br />
  58 HTTP_X_OPENID_ANTI_PHISHING<br />
  59 HTTP_X_NOKIA_MUSICSHOP_BEARER<br />
  59 HTTP_X_NOKIA_MUSICSHOP_VERSION<br />
  61 HTTP_CUDA_CLIIP<br />
  67 HTTP_PROXY_AGENT<br />
  67 HTTP_X_VERMEER_CONTENT_TYPE<br />
  86 HTTP_X_YQL_DEPTH<br />
  86 HTTP_YAHOOREMOTEIP<br />
  86 HTTP_YAHOOREMOTEIPSIG<br />
  87 HTTP_X_TM_VIA<br />
  98 HTTP_REFERRER<br />
 103 HTTP_MT_PROXY_ID<br />
 106 HTTP_XXXXXXXXXXXXXXX<br />
 108 HTTP_X_ORIGINAL_USER_AGENT<br />
 137 HTTP_X_PAGEVIEW<br />
 138 HTTP_X_DEVICE_USER_AGENT<br />
 148 HTTP_CONTENT_FILTER_HELPER<br />
 151 HTTP_X_NOVINET<br />
 155 HTTP_X_FLASH_VERSION<br />
 158 HTTP_X_PROXY_ID<br />
 160 HTTP_X_MCPROXYFILTER<br />
 179 HTTP_PROFILE<br />
 193 HTTP_X_CEPT_ENCODING<br />
 248 HTTP_X_LORI_TIME_1<br />
 344 REDIRECT_nokeepalive<br />
 373 nokeepalive<br />
 380 HTTP________<br />
 390 HTTP_X_OPERAMINI_PHONE_UA<br />
 395 HTTP_X_ICAP_VERSION<br />
 421 HTTP_X_OPERAMINI_PHONE<br />
 422 HTTP_X_OPERAMINI_FEATURES<br />
 426 HTTP_CLIENT_IP<br />
 452 HTTP_X_WAP_PROFILE<br />
 457 HTTP_X_IMFORWARDS<br />
 475 HTTP_X_CC_LIST<br />
 516 HTTP_DATE<br />
 621 HTTP_X_COMING_FROM<br />
 626 HTTP_FORWARDED_FOR<br />
 684 HTTP________________<br />
 717 HTTP_X_PURPOSE<br />
 770 HTTP_COOKIE2<br />
 867 HTTP_MAX_FORWARDS<br />
1201 HTTP_X_CLIENT_IP<br />
1728 HTTP_X_AUTOPAGER<br />
1956 HTTP_RANGE<br />
2361 CONTENT_LENGTH<br />
3673 HTTP_X_MOZ<br />
9726 CONTENT_TYPE<br />
12309 HTTP_X_BLUECOAT_VIA<br />
14935 HTTP_UA_CPU<br />
17016 HTTP_X_FORWARDED_FOR<br />
23107 HTTP_PRAGMA<br />
24218 HTTP_VIA<br />
28111 HTTP_PROXY_CONNECTION<br />
28267 REDIRECT_QUERY_STRING<br />
34096 HTTP_TE<br />
36899 HTTP_COOKIE<br />
37229 HTTP_FROM<br />
37484 HTTP_IF_MODIFIED_SINCE<br />
39785 QUERY_STRING<br />
54222 HTTP_CACHE_CONTROL<br />
122689 HTTP_KEEP_ALIVE<br />
175368 HTTP_REFERER<br />
199443 HTTP_ACCEPT_CHARSET<br />
270123 HTTP_ACCEPT_LANGUAGE<br />
350423 HTTP_ACCEPT_ENCODING<br />
391676 HTTP_CONNECTION<br />
407171 HTTP_ACCEPT<br />
505521 HTTP_USER_AGENT<br />
526665 HTTP_HOST<br />
526784 REMOTE_ADDR<br />
526784 REMOTE_PORT<br />
526784 REQUEST_METHOD<br />
526784 REQUEST_TIME<br />
526784 REQUEST_URI<br />
526784 SERVER_PROTOCOL</p></blockquote>
<p>Who knows, someone might get some value out of looking at this slice of data.  If there are specific items you want more information about, just drop me a note.</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2009/09/08/list-of-http-headers/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>User Vote SEO Conundrum</title>
		<link>http://www.secureseo.com/blog/2009/07/02/user-vote-seo-conundrum/</link>
		<comments>http://www.secureseo.com/blog/2009/07/02/user-vote-seo-conundrum/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 16:48:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2009/07/02/user-vote-seo-conundrum/</guid>
		<description><![CDATA[I happened across an SEO conundrum related to what is actually the best ranked search result.  Today I was looking up the acronym iirc - because I always forget what it means, even though I&#8217;ve seen it a thousand times and probably looked it up a half dozen times already.  It&#8217;s just not [...]]]></description>
			<content:encoded><![CDATA[<p>I happened across an SEO conundrum related to what is actually the best ranked search result.  Today I was looking up the acronym iirc - because I always forget what it means, even though I&#8217;ve seen it a thousand times and probably looked it up a half dozen times already.  It&#8217;s just not a phrase I use often so I can&#8217;t retain it - too many things going on in my noggin I guess.  So anyway, I searched Yahoo today and here&#8217;s what I saw:</p>
<p>
<div align="center"><a href="http://www.secureseo.com/images/user-vote-conundrum.png"><img src="http://www.secureseo.com/images/user-vote-conundrum.png" width="379" height="217" alt="User vote SEO conundrum"></a><br />Click to enlarge.</div>
</p>
<p>As you can see the top three results don&#8217;t actually tell me what I need to know while staying on the SERP, while the third clearly tells me exactly the information I&#8217;m looking for.  Now here&#8217;s the conundrum.  If Yahoo, or any of the search engines for that matter, rely on users to click on a link to register a vote for a particular search result, you&#8217;d see that the first three rank extremely high - because the user knows the information is there behind the links, even though it would save the user time and clearly make them less frustrated if they were simply able to get the information they were looking for.</p>
<p>So I&#8217;d say that for the user&#8217;s benefit the fourth link is by far the best, because I really didn&#8217;t want to click through, I just wanted the information.  But in the case of the first three links, I think they are far better for the websites in question.  In fact, the fact that the fourth link gives away the information is extremely bad for everyone else in that list, because it reduces the overall likelihood of a click-through for the other websites as well.  Interesting problem in a way.</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2009/07/02/user-vote-seo-conundrum/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>SEO RSS feeds</title>
		<link>http://www.secureseo.com/blog/2006/04/26/seo-rss-feeds/</link>
		<comments>http://www.secureseo.com/blog/2006/04/26/seo-rss-feeds/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 15:54:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2006/04/26/seo-rss-feeds/</guid>
		<description><![CDATA[Well here is our third blog post. Looks like we are off to a good start.  Don&#8217;t worry there is much to come that is equally technically relevant and interesting.  Unfortunately my equipment is in storage so much of the development work I would be doing has to wait for at least a [...]]]></description>
			<content:encoded><![CDATA[<p>Well here is our third blog post. Looks like we are off to a good start.  Don&#8217;t worry there is much to come that is equally technically relevant and interesting.  Unfortunately my equipment is in storage so much of the development work I would be doing has to wait for at least a few more weeks.  But to those people who wondered about the real world relevance of <A HREF="http://www.secureseo.com/blog/2006/04/07/apache-information-disclosure-issues-or-how-to-detect-cloaking/">ETag disclosure</A>, don&#8217;t fret, there is more to come.</p>
<p>Anyway, I thought as a nice gesture, for anyone who was not already very well in the know of which sites to be looking at for SEO resources, it might be nice for me to link to the RSS feeds that I personally find the most relevant and interesting.  So here&#8217;s a list of SEO RSS feeds:</p>
<p>
<UL><br />
  <LI><A HREF="http://www.secureseo.com/seo.xml">Secure SEO</A> - I had to shamelessly self promote <img src='http://www.secureseo.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
  <LI><A HREF="http://www.syndk8.net/articlerss/cat/8/">Black Hat Seo News</A><br />
  <LI><A HREF="http://feeds.feedburner.com/shoemoney">Shoemoney - Skills to Pay the Bills</A><br />
  <LI><A HREF="http://www.jimboykin.com/feed/">Jim Boykin&#8217;s Internet Marketing Blog</A><br />
  <LI><A HREF="http://jeremy.zawodny.com/blog/rss2.xml">Jeremy Zawodny&#8217;s Blog</A><br />
  <LI><A HREF="http://www.mattcutts.com/blog/feed/">Matt Cutts: Gadgets, Google and SEO</A><br />
  <LI><A HREF="http://feeds.searchenginewatch.com/searchcast">Daily SearchCast - Search Engine News Recap</A><br />
  <LI><A HREF="http://www.seoegghead.com/blog/feed/">SEO Egghead</A><br />
  <LI><A HREF="http://feeds.searchenginewatch.com/sewblog">Search Engine Watch Blog</A><br />
  <LI><A HREF="http://seoblackhat.com/rdf">SEO Blackhat: Blackhat SEO Blog</A><br />
  <LI><A HREF="http://www.alistapart.com/rss.xml">A List Apart</A><br />
  <LI><A HREF="http://www.jensense.com/index.xml">JenSense - Making sense of Contextual Advertizing</A><br />
  <LI><A HREF="http://www.searchengineblog.com/atom.xml">Search Engine Blog.com</A><br />
  <LI><A HREF="http://www.davidnaylor.co.uk/feed/rss2/">Dave Naylor</A><br />
  <LI><A HREF="http://feeds.feedburner.com/JohnBattellesSearchblog">John Battelles Search Blog</A><br />
  <LI><A HREF="http://www.seobythesea.com/?feed=rss2">SEO by the Sea</A><br />
  <LI><A HREF="http://feeds.feedburner.com/Wolf-howl">Greywolf&#8217;s SEO Blog</A><br />
  <LI><A HREF="http://feeds.seroundtable.com/SearchEngineRoundtable1">SEO Roundtable</A><br />
</UL>
</p>
<p>I hope you like the SEO RSS feeds and if you have any more to post that are worth reading please drop me a line and I&#8217;ll either add them or aggregate them into a bigger list somewhere on the site.  I&#8217;ll have some more interesting information to post here in the coming weeks, so hold tight.</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2006/04/26/seo-rss-feeds/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>Apache Information Disclosure Issues or, &#8220;How to detect cloaking&#8221;</title>
		<link>http://www.secureseo.com/blog/2006/04/07/apache-information-disclosure-issues-or-how-to-detect-cloaking/</link>
		<comments>http://www.secureseo.com/blog/2006/04/07/apache-information-disclosure-issues-or-how-to-detect-cloaking/#comments</comments>
		<pubDate>Fri, 07 Apr 2006 15:52:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/2009/07/02/apache-information-disclosure-issues-or-how-to-detect-cloaking/</guid>
		<description><![CDATA[Well, we made it to our second SEO blog post without a major hitch.  This one is about an Apache issue that I was talking about that is probably one of the nastier issues out there as far as detecting SEO (Search Engine Optimization) IP cloaking from the search engine&#8217;s perspective.  I doubt [...]]]></description>
			<content:encoded><![CDATA[<p>Well, we made it to our second SEO blog post without a major hitch.  This one is about an Apache issue that <A HREF="/blog/2006/04_03_apache_cloaking_redirect.html">I was talking about</A> that is probably one of the nastier issues out there as far as detecting SEO (Search Engine Optimization) IP cloaking from the search engine&#8217;s perspective.  I doubt things will roll this fast and furious once we get some of these initial projects out of the way but thus far I am cranking away.</p>
<p>Anyway onto the problem.  Again, putting on my black hat, I would assume based on the fact that there are so many SEO companies out there that one or two of them may be IP cloaking.  Call me crazy.  For anyone not in the know, IP cloaking is where you give a search engine spam (like <A HREF="http://www.google.com">Google</A> or <A HREF="http://www.yahoo.com">Yahoo</A>, etc&#8230;) and real users legitimate content, or vice versa depending on the application.  All this for the eventual goal of raising natural search ranking as opposed to paid advertizing.  Eventually I&#8217;m going to build an ROI tool to show people why natural search is so valuable, but I digress.</p>
<p>Well, there are really a ton of ways to do IP cloaking but the most common under Apache are using <A HREF="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">mod_rewrite</A> or using a <A HREF="http://httpd.apache.org/docs/1.3/mod/mod_alias.html#scriptalias">ScriptAlias</A>.  First you provide a link to a search engine and then you direct it to a script to deliver different content depending on IP matching (there are lots of problems with this technique beyond this, which I&#8217;ll go into in another blog post).</p>
<p>Okay, so what?  Google and Yahoo see something different than everyone else and they can&#8217;t tell that they&#8217;ve been duped, right?  Well, sorta.  While I was playing around with some server headers I came across something odd when connecting to scripts verses normal HTML files:</p>
<p><B>Normal file headers under Apache 2.0:</B></p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
HTTP/1.1 200 OK<BR><br />
Date: Fri, 07 Apr 2006 08:46:54 GMT<BR><br />
Server: Apache 2<BR><br />
Last-Modified: Fri, 07 Apr 2006 07:52:33 GMT<BR><br />
ETag: &#8220;1b0979-777-a5636e40&#8243;<BR><br />
Accept-Ranges: bytes<BR><br />
Content-Length: 1911<BR><br />
Connection: close<BR><br />
Content-Type: text/html; charset=ISO-8859-1<BR><br />
  </DIV><br />
</DIV>
</p>
<p><B>CGI Script headers under Apache 2.0:</B></p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
HTTP/1.1 200 OK<BR><br />
Date: Fri, 07 Apr 2006 08:26:37 GMT<BR><br />
Server: Apache 2<BR><br />
Content-Length: 2616<BR><br />
Connection: close<BR><br />
Content-Type: text/html; charset=ISO-8859-1<BR><br />
  </DIV><br />
</DIV>
</p>
<p>Well, that&#8217;s kinda interesting I guess, but the fact that the file is named &#8220;.cgi&#8221; would probably tip you off before anything else so it&#8217;s not that interesting.  But then I attempted cloaking the file with something like this:</p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
ScriptAlias /cloak.html &#8220;/usr/local/www/htdocs/cloak.cgi&#8221;<BR><br />
  </DIV><br />
</DIV>
</p>
<p>Which would give the user the appearance that they were going to an HTML file while they were actually visiting a dynamic page.  This is where it gets interesting.  Here is the resultant header:</p>
<p><B>ScriptAliased file headers under Apache 2.0:</B></p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
HTTP/1.1 200 OK<BR><br />
Date: Fri, 07 Apr 2006 08:32:47 GMT<BR><br />
Server: Apache 2<BR><br />
Connection: close<BR><br />
Content-Type: text/html; charset=ISO-8859-1<BR><br />
  </DIV><br />
</DIV>
</p>
<p>Notice anything different from that header and the normal file?  I&#8217;ll give you a hint, it&#8217;s the <A HREF="http://httpd.apache.org/docs/1.3/mod/core.html#fileetag">ETag</A>.  In particular, it&#8217;s non-existant on CGI scripts altogether.  Why&#8217;s that?  The ETag header as defined by <A HREF="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19">RFC2616</A> provides the current value of the entity tag for the requested variant.  In english that means that it gives you the unique value of that file being requested by performing a mathematical function on the location on the drive and the last modified date.  Okay, that&#8217;s pretty interesting but let&#8217;s come back to it in a second.</p>
<p>Now what about mod_rewrite?  Mod_rewrite is the cloaker&#8217;s tool of choice because of it&#8217;s flexibility.  Let&#8217;s say you wanted to send any URLs with the word &#8220;seo&#8221; in them to a script.  IE: www.whatever.com/seo or www.whatever.com/blah/seo/blah etc&#8230;.  You&#8217;d use mod_rewrite simply because it is easy and scalable.  Here&#8217;a an example that would do just that:</p>
<p><B>Example .htaccess file with mod_rewrite:</B></p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
RewriteEngine on<BR><br />
RewriteBase /<BR><br />
RewriteRule seo /cloak.html<BR><br />
  </DIV><br />
</DIV>
</p>
<p>In the example above I am re-writing to an HTML file (the same HTML file as the very first example) not a CGI script.  Now, this is a pretty good cloaking technique because again it is scalable, however it suffers a different but similar flaw to what we saw before.  Here&#8217;s an example:</p>
<p><B>Mod_rewrite to original HTML file headers on Apache 2.0</B></p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
HTTP/1.1 200 OK<BR><br />
Date: Fri, 07 Apr 2006 08:46:15 GMT<BR><br />
Server: Apache 2<BR><br />
Last-Modified: Fri, 07 Apr 2006 08:52:33 GMT<BR><br />
ETag: &#8220;1b0979-777-a5636e40;2bd1c700&#8243;<BR><br />
Accept-Ranges: bytes<BR><br />
Content-Length: 1911<BR><br />
Connection: close<BR><br />
Content-Type: text/html; charset=ISO-8859-1<BR><br />
  </DIV><br />
</DIV>
</p>
<p>Let&#8217;s look at those two ETag signatures side by side:</p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
ETag: &#8220;1b0979-777-a5636e40&#8243;<BR><br />
ETag: &#8220;1b0979-777-a5636e40;2bd1c700&#8243;<BR><br />
  </DIV><br />
</DIV>
</p>
<p>It looks like Apache has told us two things.  It has told us the the original file is the same, and it has told us that it is accessing it in a different way (in this case via mod_rewrite).  But wait, there&#8217;s more.  What if we use mod_rewrite to access a CGI script (the most common application for mod_rewrite for SEO cloaking anyway)?  Let&#8217;s check it out:</p>
<p><B>Mod_rewrite forwarding to a CGI script headers</B></p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
HTTP/1.1 200 OK<BR><br />
Date: Fri, 07 Apr 2006 08:28:11 GMT<BR><br />
Server: Apache 2<BR><br />
Content-Length: 1911<BR><br />
Connection: close<BR><br />
Content-Type: text/html; charset=ISO-8859-1<BR><br />
  </DIV><br />
</DIV>
</p>
<p>Okay, but does that really help us?  I mean, there&#8217;s no ETag at all right?  Well, yes, and that&#8217;s the exact point.  Because there is no ETag on in the header and there is for a confirmed normal file, you can tell that that page is dynamically created using mod_rewrite or a ScriptAlias.  But now you&#8217;re asking, &#8220;What if you don&#8217;t know if it normally has the ETag at all, or more specifically what if the entire htdocs directory is dynamic?&#8221;  How about trying a file that is always there and lives outside of the htdocs directory?  The Apache logo that is included with the base install inside the /icons directory definitely qualifies.  By getting <A HREF="/icons/apache_pb.gif">/icons/apache_pb.gif</A> we see the following:</p>
<p><B>GET /icons/apache_pb.gif HTTP/1.0</B></p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
HTTP/1.1 200 OK<BR><br />
Date: Fri, 07 Apr 2006 08:32:37 GMT<BR><br />
Server: Apache 2<BR><br />
Last-Modified: Tue, 21 Apr 2004 14:35:21 GMT<BR><br />
ETag: &#8220;1818d7-916-a64a7c40&#8243;<BR><br />
Accept-Ranges: bytes<BR><br />
Content-Length: 2326<BR><br />
Connection: close<BR><br />
Content-Type: image/gif<BR><br />
  </DIV><br />
</DIV>
</p>
<p>That&#8217;s even true if the .htaccess file would seem to disallow that with something extremely restrictive like the next example which tried to make anything with a slash in it redirect to cloak.cgi:</p>
<p>
<DIV ALIGN="CENTER"><br />
  <DIV id="wrapper3"><br />
RewriteEngine on<BR><br />
RewriteBase /<BR><br />
RewriteRule &#8220;/&#8221; /cloak.cgi<BR><br />
  </DIV><br />
</DIV>
</p>
<p>The reason being, the .htaccess file lives outside of that directory.  So unless the webmaster takes specific action to remove the /icons directory or remove the apache link in httpd.conf or otherwise add cloaking to all the files on the system there is a high risk of cloak detection.</p>
<p>And there you have it folks.  Using a static file to base-line, a search engine can tell what else on your system is dynamically built and may make it more likely to be cloaking - thereby raising red flags.  I tested this under Apache 2.x primarily but it should work on all forms of Apache that use the ETag header (versions 1.3.23 and later).  Black-hat SEOs beware.  Your mod_rewrites are vulnerable to information disclosure and the search engines of the world can tell what you are doing if this is every implemented as a detection mechanism.  I wonder what <A HREF="http://www.mattcutts.com/blog/">Matt Cutts</A> and <A HREF="http://jeremy.zawodny.com/blog/">Jeremy Zawodny</A> will think of this.</p>
<p>Now, back to work!</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2006/04/07/apache-information-disclosure-issues-or-how-to-detect-cloaking/feed/</wfw:commentRss>
		</item>
	      <item>
		<title>IP/Header Cloaking, Redirect Tools and Apache Issues, oh my!</title>
		<link>http://www.secureseo.com/blog/2006/04/03/ipheader-cloaking-redirect-tools-and-apache-issues-oh-my/</link>
		<comments>http://www.secureseo.com/blog/2006/04/03/ipheader-cloaking-redirect-tools-and-apache-issues-oh-my/#comments</comments>
		<pubDate>Mon, 03 Apr 2006 15:42:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SEO]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.secureseo.com/blog/?p=3</guid>
		<description><![CDATA[Well, here it is, my first blog post, and boy is it going to be a crappy one.  I don&#8217;t have much to update other than I have gotten parts of the site up and running and it&#8217;s going pretty smoothly other than a mis-spelled domain name I accidentally purchased.  Oops.  Me [...]]]></description>
			<content:encoded><![CDATA[<p>Well, here it is, my first blog post, and boy is it going to be a crappy one.  I don&#8217;t have much to update other than I have gotten parts of the site up and running and it&#8217;s going pretty smoothly other than a mis-spelled domain name I accidentally purchased.  Oops.  Me and my spelling!</p>
<p>Anyway, I am working on a few SEO projects that are probably going to be worth your while to read once I get them working.  Unfortuantely, my machines are still in storage from the move so I am borrowing James&#8217; equipment for the time being.  He&#8217;s being a good sport about me tweaking the web server beyond all recognition and logging millions of packets, despite the fact I am getting the impression he&#8217;d rather tell me to go jump off a bridge because he&#8217;s too busy.  So for that, thank you James (minus the bridge part)!</p>
<p>So let me put on my black hat here while I write out this partial list of the projects I am working on:</p>
<p><B>IP/Header Cloaking</B>: Okay, I know, cloaking <A HREF="http://ip-delivery.com/">has been done</A> a <A HREF="http://searchenginecloaker.com/">thousand times</A> before.  Well, that&#8217;s true.  But never like this.  I&#8217;ve gotten some amazing data accrewed over the last few days, but it&#8217;s both not enough and it&#8217;s also incomplete in terms of what I am logging.  So I imagine this will be a two phased project.  The first phase will be a proof of concept of data in aggregate.  The second will move on to more types of data by increased logging infrastructure as well as a better range of logging nodes.  Stay tuned on this one.</p>
<p><B>Redirect tools</B>: Once upon a time I invented a tool to do logging of <A HREF="http://slashdot.org/articles/05/03/15/1256228.shtml?tid=217">redirect holes found in sites</A>.  After much-ado I am resurrecting that project to do better logging, increased detection engine performance, and DB backend.  Stay tuned for this one, although this one will have to wait for my machines to come out of storage so I can get my old code.  Not that it would take a while to re-write, but it&#8217;s only a month away, so I&#8217;ll wait and work on other things in the mean-time.</p>
<p><B>Apache issues</B>: Randomly I came across a problem the other day with <A HREF="http://www.apache.org/">Apache</A> that could cause some blackhat SEOs some issues if the search engines out there ever started implementing what I found.  I would release it now but I want to do some more tests before I consider it ready for prime-time.  Thus far it seems to be working though.  I&#8217;ll probably have to wait for my machines to come out of storage for this one too, although I might be able to test on another box I have at my disposal.  I haven&#8217;t decided on this one yet where it falls on my priority list.</p>
<p>I&#8217;m also pondering writing a program to spam a bunch of different tools to see which ones actually drive traffic.  I have a feeling our &#8220;we aren&#8217;t evil&#8221; friends are basically lying when it comes to privacy, but we&#8217;ll see.  That one is definitely on the back-burner since it&#8217;s 100% a theory and would require me putting a lot of spyware on a <A HREF="http://www.vmware.com/">VMware</A> install somewhere.  It&#8217;ll stay a theory at least until I get a lot more time on my hands - which will doubtfully ever happen.  Whelp, that&#8217;s it for now.  I&#8217;ll keep this up to date with more info when I have it.</p>
<!--Wed, 10 March 2010 04:03:27 +000-->]]></content:encoded>
			<wfw:commentRss>http://www.secureseo.com/blog/2006/04/03/ipheader-cloaking-redirect-tools-and-apache-issues-oh-my/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
