<?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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Keyw0rk</title>
	<atom:link href="http://blog.keyw0rk.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.keyw0rk.net</link>
	<description>Web services, Tutorials and Webmaster&#38;SEO Tools Box</description>
	<lastBuildDate>Wed, 10 Mar 2010 10:16:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Security Guide: Databases and SQL</title>
		<link>http://blog.keyw0rk.net/security/php-security-guide-databases-and-sql/</link>
		<comments>http://blog.keyw0rk.net/security/php-security-guide-databases-and-sql/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 10:16:15 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Exposed Access Credentials]]></category>
		<category><![CDATA[PHP Security Guide]]></category>
		<category><![CDATA[Security Guide]]></category>
		<category><![CDATA[sqj inj]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=413</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

PHP Security Guide
Most PHP applications interact with a database. This usually involves connecting to a database server and using access
credentials to authenticate:
&#60;?php
$host = &#8216;example.org&#8217;;
$username = &#8216;myuser&#8217;;
$password = &#8216;mypass&#8217;;
$db = mysql_connect($host, $username, $password);
?&#62;
This could be an example of a file called db.inc that is included whenever a connection to the database is needed. This
approach is convenient, [...]]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p><strong>PHP Security Guide<br />
</strong>Most PHP applications interact with a database. This usually involves connecting to a database server and using access<br />
credentials to authenticate:<br />
<em>&lt;?php<br />
$host = &#8216;example.org&#8217;;<br />
$username = &#8216;myuser&#8217;;<br />
$password = &#8216;mypass&#8217;;<br />
$db = mysql_connect($host, $username, $password);<br />
?&gt;</em><br />
This could be an example of a file called db.inc that is included whenever a connection to the database is needed. This<br />
approach is convenient, and it keeps the access credentials in a single file.<br />
Potential problems arise when this file is somewhere within document root. This is a common approach, because it makes<br />
include and require statements much simpler, but it can lead to situations that expose your access credentials.<br />
Remember that everything within document root has a URL associated with it. For example, if document root is /usr/<br />
local/apache/htdocs, then a file located at /usr/local/apache/htdocs/inc/db.inc has a URL such as http://<br />
example.org/inc/db.inc.<br />
Combine this with the fact that most web servers will serve .inc files as plaintext, and the risk of exposing your access<br />
credentials should be clear. A bigger problem is that any source code in these modules can be exposed, but access<br />
credentials are particularly sensitive.<br />
Of course, one simple solution is to place all modules outside of document root, and this is a good practice. Both include<br />
and require can accept a filesystem path, so there&#8217;s no need to make modules accessible via URL. It is an unnecessary<br />
risk.<br />
If you have no choice in the placement of your modules, and they must be within document root, you can put something like<br />
the following in your httpd.conf file (assuming Apache):<br />
<em>&lt;Files ~ &#8220;\.inc$&#8221;&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;</em><br />
It is not a good idea to have your modules processed by the PHP engine. This includes renaming your modules with a .php<br />
extension as well as using AddType to have .inc files treated as PHP files. Executing code out of context can be very<br />
dangerous, because it&#8217;s unexpected and can lead to unknown results. However, if your modules consist of only variable<br />
assignments (as an example), this particular risk is mitigated.<br />
My favorite method for protecting your database access credentials is described in the PHP Cookbook (O&#8217;Reilly) by David<br />
Sklar and Adam Trachtenberg. Create a file, /path/to/secret-stuff, that only root can read (not nobody):<br />
<em>SetEnv DB_USER &#8220;myuser&#8221;<br />
SetEnv DB_PASS &#8220;mypass&#8221;</em><br />
Include this file within httpd.conf as follows:<br />
<em>Include &#8220;/path/to/secret-stuff&#8221;</em></p>
<p>Now you can use $_SERVER['DB_USER'] and $_SERVER['DB_PASS'] in your code. Not only do you never have to write<br />
your username and password in any of your scripts, the web server can&#8217;t read the secret-stuff file, so no other users can<br />
write scripts to read your access credentials (regardless of language). Just be careful not to expose these variables with<br />
something like phpinfo() or print_r($_SERVER).<br />
<strong>SQL Injection</strong><br />
SQL injection attacks are extremely simple to defend against, but many applications are still vulnerable. Consider the<br />
following SQL statement:<br />
<em>&lt;?php<br />
$sql = &#8220;INSERT<br />
INTO users (reg_username,<br />
reg_password,<br />
reg_email)<br />
VALUES (&#8216;{$_POST['reg_username']}&#8217;,<br />
&#8216;$reg_password&#8217;,<br />
&#8216;{$_POST['reg_email']}&#8217;)&#8221;;<br />
?&gt;</em><br />
This query is constructed with $_POST, which should immediately look suspicious.<br />
Assume that this query is creating a new account. The user provides a desired username and an email address. The<br />
registration application generates a temporary password and emails it to the user to verify the email address. Imagine that<br />
the user enters the following as a username:<br />
bad_guy&#8217;, &#8216;mypass&#8217;, &#8221;), (&#8216;good_guy<br />
This certainly doesn&#8217;t look like a valid username, but with no data filtering in place, the application can&#8217;t tell. If a valid email<br />
address is given (shiflett@php.net, for example), and 1234 is what the application generates for the password, the SQL<br />
statement becomes the following:<br />
<em>&lt;?php<br />
$sql = &#8220;INSERT<br />
INTO users (reg_username,<br />
reg_password,<br />
reg_email)<br />
VALUES (&#8216;bad_guy&#8217;, &#8216;mypass&#8217;, &#8221;), (&#8216;good_guy&#8217;,<br />
&#8216;1234&#8242;,<br />
&#8217;shiflett@php.net&#8217;)&#8221;;<br />
?&gt;</em><br />
Rather than the intended action of creating a single account (good_guy) with a valid email address, the application has been<br />
tricked into creating two accounts, and the user supplied every detail of the bad_guy account.<br />
While this particular example might not seem so harmful, it should be clear that worse things could happen once an attacker<br />
can make modifications to your SQL statements.<br />
For example, depending on the database you are using, it might be possible to send multiple queries to the database server<br />
in a single call. Thus, a user can potentially terminate the existing query with a semicolon and follow this with a query of the<br />
user&#8217;s choosing.<br />
MySQL, until recently, does not allow multiple queries, so this particular risk is mitigated. Newer versions of MySQL allow<br />
multiple queries, but the corresponding PHP extension (ext/mysqli) requires that you use a separate function if you want<br />
to send multiple queries (mysqli_multi_query() instead of mysqli_query()). Only allowing a single query is safer,<br />
because it limits what an attacker can potentially do.<br />
Protecting against SQL injection is easy:</p>
<ul>
<li>Filter your data.</li>
</ul>
<p>This cannot be overstressed. With good data filtering in place, most security concerns are mitigated, and some are<br />
practically eliminated.</p>
<ul>
<li>l Quote your data.</li>
</ul>
<p>If your database allows it (MySQL does), put single quotes around all values in your SQL statements, regardless of<br />
the data type.</p>
<ul>
<li>l Escape your data.</li>
</ul>
<p>Sometimes valid data can unintentionally interfere with the format of the SQL statement itself. Use<br />
mysql_escape_string() or an escaping function native to your particular database. If there isn&#8217;t a specific one,<br />
addslashes() is a good last resort.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/security/php-security-guide-databases-and-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Security Guide: Sessions</title>
		<link>http://blog.keyw0rk.net/security/php-security-guide-sessions/</link>
		<comments>http://blog.keyw0rk.net/security/php-security-guide-sessions/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 10:11:47 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Capture]]></category>
		<category><![CDATA[Fixation]]></category>
		<category><![CDATA[PHP Security Guide]]></category>
		<category><![CDATA[Prediction]]></category>
		<category><![CDATA[Security Guide]]></category>
		<category><![CDATA[Session Fixation]]></category>
		<category><![CDATA[Session Hijacking]]></category>
		<category><![CDATA[Sessions]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=411</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Session Fixation
Session security is a sophisticated topic, and it&#8217;s no surprise that sessions are a frequent target of attack. Most session
attacks involve impersonation, where the attacker attempts to gain access to another user&#8217;s session by posing as that user.
The most crucial piece of information for an attacker is the session identifier, because this is required [...]]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p><strong>Session Fixation<br />
</strong>Session security is a sophisticated topic, and it&#8217;s no surprise that sessions are a frequent target of attack. Most session<br />
attacks involve impersonation, where the attacker attempts to gain access to another user&#8217;s session by posing as that user.<br />
The most crucial piece of information for an attacker is the session identifier, because this is required for any impersonation<br />
attack. There are three common methods used to obtain a valid session identifier:</p>
<ul>
<li>l Prediction</li>
<li>l Capture</li>
<li>l Fixation</li>
</ul>
<p>Prediction refers to guessing a valid session identifier. With PHP&#8217;s native session mechanism, the session identifier is<br />
extremely random, and this is unlikely to be the weakest point in your implementation.<br />
Capturing a valid session identifier is the most common type of session attack, and there are numerous approaches.<br />
Because session identifiers are typically propagated in cookies or as <em>GET</em> variables, the different approaches focus on<br />
attacking these methods of transfer. While there have been a few browser vulnerabilities regarding cookies, these have<br />
mostly been Internet Explorer, and cookies are slightly less exposed than <em>GET</em> variables. Thus, for those users who enable<br />
cookies, you can provide them with a more secure mechanism by using a cookie to propagate the session identifier.<br />
Fixation is the simplest method of obtaining a valid session identifier. While it&#8217;s not very difficult to defend against, if your<br />
session mechanism consists of nothing more than <em>session_start()</em>, you are vulnerable.<br />
In order to demonstrate session fixation, I will use the following script, session.php:<br />
<em>&lt;?php<br />
session_start();<br />
if (!isset($_SESSION['visits']))<br />
{<br />
$_SESSION['visits'] = 1;<br />
}<br />
else<br />
{<br />
$_SESSION['visits']++;<br />
}<br />
echo $_SESSION['visits'];<br />
?&gt;</em></p>
<p>Upon first visiting the page, you should see 1 output to the screen. On each subsequent visit, this should increment to reflect<br />
how many times you have visited the page.<br />
To demonstrate session fixation, first make sure that you do not have an existing session identifier (perhaps delete your<br />
cookies), then visit this page with ?PHPSESSID=1234 appended to the URL. Next, with a completely different browser (or<br />
even a completely different computer), visit the same URL again with ?PHPSESSID=1234 appended. You will notice that you<br />
do not see 1 output on your first visit, but rather it continues the session you previously initiated.<br />
Why can this be problematic? Most session fixation attacks simply use a link or a protocol-level redirect to send a user to a<br />
remote site with a session identifier appended to the URL. The user likely won&#8217;t notice, since the site will behave exactly the<br />
same. Because the attacker chose the session identifier, it is already known, and this can be used to launch impersonation<br />
attacks such as session hijacking.<br />
A simplistic attack such as this is quite easy to prevent. If there isn&#8217;t an active session associated with a session identifier that<br />
the user is presenting, then regenerate it just to be sure:<br />
<em>&lt;?php<br />
session_start();<br />
if (!isset($_SESSION['initiated']))<br />
{<br />
session_regenerate_id();<br />
$_SESSION['initiated'] = true;<br />
}<br />
?&gt;</em></p>
<p>The problem with such a simplistic defense is that an attacker can simply initialize a session for a particular session identifier,<br />
and then use that identifier to launch the attack.<br />
To protect against this type of attack, first consider that session hijacking is only really useful after the user has logged in or<br />
otherwise obtained a heightened level of privilege. So, if we modify the approach to regenerate the session identifier<br />
whenever there is any change in privilege level (for example, after verifying a username and password), we will have<br />
practically eliminated the risk of a successful session fixation attack.<br />
<strong>Session Hijacking</strong><br />
Arguably the most common session attack, session hijacking refers to all attacks that attempt to gain access to another<br />
user&#8217;s session.</p>
<p>As with session fixation, if your session mechanism only consists of session_start(), you are vulnerable, although the<br />
exploit isn&#8217;t as simple.<br />
Rather than focusing on how to keep the session identifier from being captured, I am going to focus on how to make such a<br />
capture less problematic. The goal is to complicate impersonation, since every complication increases security. To do this,<br />
we will examine the steps necessary to successfully hijack a session. In each scenario, we will assume that the session<br />
identifier has been compromised.<br />
With the most simplistic session mechanism, a valid session identifier is all that is needed to successfully hijack a session. In<br />
order to improve this, we need to see if there is anything extra in an HTTP request that we can use for extra identification.<br />
Note<br />
It is unwise to rely on anything at the TCP/IP level, such as IP address, because these are lower level<br />
protocols that are not intended to accommodate activities taking place at the HTTP level. A single user can<br />
potentially have a different IP address for each request, and multiple users can potentially have the same IP<br />
address.<br />
Recall a typical HTTP request:<br />
<em>GET / HTTP/1.1<br />
Host: example.org<br />
User-Agent: Mozilla/5.0 Gecko<br />
Accept: text/xml, image/png, image/jpeg, image/gif, */*<br />
Cookie: PHPSESSID=1234</em></p>
<p>Only the Host header is required by HTTP/1.1, so it seems unwise to rely on anything else. However, consistency is really<br />
all we need, because we&#8217;re only interested in complicating impersonation without adversely affecting legitimate users.<br />
Imagine that the previous request is followed by a request with a different User-Agent:<br />
<em>GET / HTTP/1.1<br />
Host: example.org<br />
User-Agent: Mozilla Compatible (MSIE)<br />
Accept: text/xml, image/png, image/jpeg, image/gif, */*<br />
Cookie: PHPSESSID=1234</em><br />
Although the same cookie is presented, should it be assumed that this is the same user? It seems highly unlikely that a<br />
browser would change the User-Agent header between requests, right? Let&#8217;s modify the session mechanism to perform an<br />
extra check:</p>
<p><em>&lt;?php<br />
session_start();<br />
if (isset($_SESSION['HTTP_USER_AGENT']))<br />
{<br />
if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))<br />
{<br />
/* Prompt for password */<br />
exit;<br />
}<br />
}<br />
else<br />
{<br />
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);<br />
}<br />
?&gt;</em></p>
<p>Now an attacker must not only present a valid session identifier, but also the correct User-Agent header that is associated<br />
with the session. This complicates things slightly, and it is therefore a bit more secure.<br />
Can we improve this? Consider that the most common method used to obtain cookie values is by exploiting a vulnerable<br />
browser such as Internet Explorer. These exploits involve the victim visiting the attacker&#8217;s site, so the attacker will be able to<br />
obtain the correct User-Agent header. Something additional is necessary to protect against this situation.<br />
Imagine if we required the user to pass the MD5 of the User-Agent in each request. An attacker could no longer just<br />
recreate the headers that the victim&#8217;s requests contain, but it would also be necessary to pass this extra bit of information.<br />
While guessing the construction of this particular token isn&#8217;t too difficult, we can complicate such guesswork by simply adding<br />
an extra bit of randomness to the way we construct the token:<br />
<em>&lt;?php<br />
$string = $_SERVER['HTTP_USER_AGENT'];<br />
$string .= &#8216;SHIFLETT&#8217;;<br />
/* Add any other data that is consistent */<br />
$fingerprint = md5($string);<br />
?&gt;</em><br />
Keeping in mind that we&#8217;re passing the session identifier in a cookie, and this already requires that an attack be used to<br />
compromise this cookie (and likely all HTTP headers as well), we should pass this fingerprint as a URL variable. This must<br />
be in all URLs as if it were the session identifier, because both should be required in order for a session to be automatically<br />
continued (in addition to all checks passing).<br />
In order to make sure that legitimate users aren&#8217;t treated like criminals, simply prompt for a password if a check fails. If there<br />
is an error in your mechanism that incorrectly suspects a user of an impersonation attack, prompting for a password before<br />
continuing is the least offensive way to handle the situation. In fact, your users may appreciate the extra bit of protection<br />
perceived from such a query.<br />
There are many different methods you can use to complicate impersonation and protect your applications from session<br />
hijacking. Hopefully you will at least do something in addition to session_start() as well as be able to come up with a few<br />
ideas of your own. Just remember to make things difficult for the bad guys and easy for the good guys.<br />
Note<br />
Some experts claim that the User-Agent header is not consistent enough to be used in the way described.<br />
The argument is that an HTTP proxy in a cluster can modify the User-Agent header inconsistently with other<br />
proxies in the same cluster. While I have never observed this myself (and feel comfortable relying on the<br />
consistency of User-Agent), it is something you may want to consider.<br />
The Accept header has been known to change from request to request in Internet Explorer (depending on<br />
whether the user refreshes the browser), so this should not be relied upon for consistency.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/security/php-security-guide-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FunGames24 &#8211; Don&#8217;t stop gaming</title>
		<link>http://blog.keyw0rk.net/webservices/fungames24-dont-stop-gaming/</link>
		<comments>http://blog.keyw0rk.net/webservices/fungames24-dont-stop-gaming/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 00:04:15 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[Web Services]]></category>
		<category><![CDATA[Don't stop gaming]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[fun games]]></category>
		<category><![CDATA[fun games 24]]></category>
		<category><![CDATA[FunGames24]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[keyw0rk]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=407</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Online Free FunGames24: fungames24.keyw0rk.net
]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p>Online Free FunGames24: <a href="http://fungames24.keyw0rk.net">fungames24.keyw0rk.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/webservices/fungames24-dont-stop-gaming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>30 Black Hat SEO Techniques</title>
		<link>http://blog.keyw0rk.net/search-engine-optimization-seo/30-black-hat-seo-techniques/</link>
		<comments>http://blog.keyw0rk.net/search-engine-optimization-seo/30-black-hat-seo-techniques/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 15:57:04 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[black hat]]></category>
		<category><![CDATA[black hats]]></category>
		<category><![CDATA[keyw0rk]]></category>
		<category><![CDATA[keyw0rk.net]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[search engine optimization]]></category>
		<category><![CDATA[SEO Techniques]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=405</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>


Hidden text – Create modern CSS based websites with JQuery effects. They often hide large portions of text in layers to display them on click or mouse over for usability reasons. Example: CSS pagination.
IP delivery – Offer the proper localized content to those coming from a country specific IP address. Offer the user a choice [...]]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<ol>
<li><strong>Hidden text</strong> – Create modern CSS based websites with JQuery effects. They often hide large portions of text in layers to display them on click or mouse over for usability reasons. Example: CSS pagination.</li>
<li><strong>IP delivery</strong> – Offer the proper localized content to those coming from a country specific IP address. Offer the user a choice though. Shopping.com does a great job here.</li>
<li><strong>301 redirects</strong> – Redirect outdated pages to the newer versions or your homepage. When moving to a new domain use them of course as well.</li>
<li><strong>Throw Away Domains</strong> – Create exact match micro sites for short term popular keywords and abandon them when the trend subsides. Something like tigerwoodssexrehab.com</li>
<li><strong>Cloaking</strong> – Hide the heavy Flash animations from Google, show the text-only version optimized for accessibility and findability.</li>
<li><strong>Paid links</strong> – Donate for charity, software developers etc. Many of them display links to those who donate.</li>
<li><strong>Keyword stuffing</strong> – Tags and folksonomy. Keyword stuff but adding several tags or let your users do the dirty work via UGC tagging (folksonomy) every major social site does that.</li>
<li><strong>Automatically generated keyword pages</strong> – Some shopping search engines create pages from each Google search query and assign the appropriate products to each query. You can do that as well if you have enough content.</li>
<li><strong>Mispsellings</strong> – Define, correct the misspelled term and/or redirect to the correct version.</li>
<li><strong>Scraping</strong> – Create mirrors for popular sites. Offer them to the respective webmasters. Most will be glad to pay less.</li>
<li><strong>Ad only pages</strong> – Create all page ads (<a id="dq-w" title="interstitials" href="http://www.marketingterms.com/dictionary/interstitial/">interstitials</a>) and show them before users see content like many old media do.</li>
<li><strong>Blog spam</strong> – Don’t spam yourself! Get spammed! Install a WordPress blog without Akismet spam protection. Then create a few posts about Mesothelioma for example, a very profitable keyword. Then let spammers comment spam it or even add posts (via TDO Mini Forms). Last but not least parse the comments for your keyword and outgoing links. If they contain the keyword publish them and remove the outgoing links of course. Bot user generated content so to say.</li>
<li><strong>Duplicate content on multiple domains</strong> – Offer your content under a creative Commons License with attribution.</li>
<li><strong>Domain grabbing</strong> – Buy old authority domains that failed and revive them instead of putting them on sale.</li>
<li><strong>Fake news</strong> – <a id="r3bi" title="Create real news on official looking sites for real events" href="http://www.nytimes-se.com/">Create real news on official looking sites for real events</a>. You can even do it <a id="jfm4" title="in print" href="http://laughingsquid.com/the-yes-men-distribute-fake-new-york-times-iraq-war-ends/">in print</a>. Works great for all kinds of activism related topics.</li>
<li><strong>Link farm</strong> – Create a legit blog network of flagship blogs. A full time pro blogger can manage 3 to 5 high quality blogs by her or himself.</li>
<li><strong>New exploits</strong> – Find them and report them, blog about them. You break story and thus you get all the attention and links. Dave Naylor is excellent at it.</li>
<li><strong>Brand jacking</strong> – Write a bad review for a brand that has disappointed you or destroys the planet or set up a brand x sucks page and let consumers voice their concerns.</li>
<li><strong>Rogue bots</strong> – Spider websites and make their webmasters aware of broken links and other issues. Some people may be thankful enough to link to you.</li>
<li><strong>Hidden affiliate links</strong> – In fact hiding affiliate links is good for usability and can be even more ethical than showing them. example.com/ref?id=87233683 is far worse than than just example.com. Also unsuspecting Web users will copy your ad to forums etc. which might break their TOS. The only thing you have to do is disclose the affiliate as such. I prefer to use [ad] (on Twitter for example) or [partner-link] elsewhere. This way you can strip the annoying “ref” ids and achieve full disclosure at the same time.</li>
<li><strong>Doorway pages</strong> – Effectively doorway pages could also be called landing pages. The only difference is that doorway pages are worthless crap while landing pages are streamlined to suffice on their own. Common for both is that they are highly optimized for organic search traffic. So instead of making your doorway pages just a place to get skipped optimize them as landing pages and make the users convert right there.</li>
<li><strong>Multiple subdomains</strong> – Multiple subdomains for one domain can serve an ethical purpose. Just think blogspot.co or wordpress.com – they create multiple subdomains by UGC. This way they can rank several times for a query. You can offer subdomains to your users as well.</li>
<li><strong>Twitter automation</strong> – There is nothing wrong with Twitter automation as long as you don’t overdo it. Scheduling and repeating tweets, even automatically tweeting RSS feeds from your or other blogs is perfectly OK as long as the Twitter account has a real person attending it who tweets “manually” as well. Bot accounts can be ethical as well in case they are useful no only for yourself. A bot collecting news about Haiti in the aftermath of the earthquake would be perfectly legit if you ask me.</li>
<li><strong>Deceptive headlines</strong> – Tabloids use them all the time, black hat <a href="http://www.keyw0rk.net"target="_blank"title="seo" >SEO</a> also do. There are ethical use cases for deceptive headlines though. Satire is one of course and humor simply as well. For instance I could end this list with 24 items and declare this post to a list of 30 items anyways. That would be a good laugh. I’ve done that in the past but in a more humorous post.</li>
<li><strong>Google Bowling</strong> – The bad thing about Google bowling is that you hurt sites you don’t like. You could reverse that: Reverse Google bowling would mean that you push sites of competitors you like to make those you dislike disappear below. In a way we do that all the time linking out to the competition, the good guys of SEO who then outrank the ugly sites we like a lot less.</li>
<li><strong>Invisible links</strong> – You’d never used invisible links on your sites did you? You liar! You have. Most free web counters and statistic tools use them. Statcounter is a good example. So when you embed them on your site you use invisible links.</li>
<li><strong>Different content for search engines than users</strong> – Do you use Wordpress? Then you have the nofollow attribute added to your comment links. this way the search engine gets different content than the user. He sees and clicks a link. A search bot sees a no trespass sign instead. In white hat SEO it’s often called PageRank sculpting. Most social media add ons do that by default.</li>
<li><strong>Hacking sites</strong> – While crackers hack sites security experts warn site owners that they vulnerabilities. Both discover the same issues. Recently I got an email by someone who warned me to update my WordPress installation. That was a grand idea I thought.</li>
<li><strong>Slander linkbait</strong> – Pulling a Calacanis like “SEO is bullshit” is quite common these days. Why don’t do it the other way around? The anti SEO thing doesn’t work that good anymore unless you are as famous as Robert Scoble. In contrast a post dealing with “100 Reasons to Love SEO Experts” might strike a chord by now.</li>
<li><strong>Map spam</strong> – Instead of faking multiple addresses all over the place just to appear on Google Maps and Local why don’t you simply create an affiliate network of real life small business owners with shops and offices who, for a small amount of money, are your representatives there? All they need to do is to collect your mail from Google and potential clients.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/search-engine-optimization-seo/30-black-hat-seo-techniques/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Source Viewer</title>
		<link>http://blog.keyw0rk.net/webmastertools/source-viewer/</link>
		<comments>http://blog.keyw0rk.net/webmastertools/source-viewer/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 23:25:58 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[Webmaster tools]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[Source Viewer]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[view]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=403</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Go to: sourceviewer.keyw0rk.net
]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p>Go to: <a href="http://sourceviewer.keyw0rk.net">sourceviewer.keyw0rk.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/webmastertools/source-viewer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meta Tag Extractor</title>
		<link>http://blog.keyw0rk.net/webmastertools/meta-tag-extractor/</link>
		<comments>http://blog.keyw0rk.net/webmastertools/meta-tag-extractor/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 23:25:15 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[Webmaster tools]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[Meta Tag Extractor]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[view]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=401</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Go to: metatagextractor.keyw0rk.net
]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p>Go to: <a href="http://metatagextractor.keyw0rk.net">metatagextractor.keyw0rk.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/webmastertools/meta-tag-extractor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encrypter</title>
		<link>http://blog.keyw0rk.net/webmastertools/encrypter/</link>
		<comments>http://blog.keyw0rk.net/webmastertools/encrypter/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 23:24:28 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[Webmaster tools]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[encrypter]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=399</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Go to: encrypter.keyw0rk.net
]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p>Go to: <a href="http://encrypter.keyw0rk.net">encrypter.keyw0rk.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/webmastertools/encrypter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alexa Ranking</title>
		<link>http://blog.keyw0rk.net/webmastertools/alexa-ranking/</link>
		<comments>http://blog.keyw0rk.net/webmastertools/alexa-ranking/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 23:23:44 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[Webmaster tools]]></category>
		<category><![CDATA[alexa]]></category>
		<category><![CDATA[alexa ranking]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[rank]]></category>
		<category><![CDATA[ranking]]></category>
		<category><![CDATA[search rank]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=397</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Go to: alexaranking.keyw0rk.net
]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p>Go to: <a href="http://alexaranking.keyw0rk.net">alexaranking.keyw0rk.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/webmastertools/alexa-ranking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Browser Details</title>
		<link>http://blog.keyw0rk.net/webservices/browser-details/</link>
		<comments>http://blog.keyw0rk.net/webservices/browser-details/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 23:22:26 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[Web Services]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[browser details]]></category>
		<category><![CDATA[detail]]></category>
		<category><![CDATA[s]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=395</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Go to: browserdetails.keyw0rk.net
]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p>Go to: <a href="http://browserdetails.keyw0rk.net">browserdetails.keyw0rk.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/webservices/browser-details/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proxy Lister</title>
		<link>http://blog.keyw0rk.net/webservices/proxy-lister/</link>
		<comments>http://blog.keyw0rk.net/webservices/proxy-lister/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 02:19:49 +0000</pubDate>
		<dc:creator>Keyw0rk</dc:creator>
				<category><![CDATA[Web Services]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[keyw0rk]]></category>
		<category><![CDATA[lister]]></category>
		<category><![CDATA[my]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[proxy lister]]></category>
		<category><![CDATA[submit proxy]]></category>
		<category><![CDATA[top 25]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web based]]></category>
		<category><![CDATA[Web Based Proxies]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[Why Use A Proxy]]></category>

		<guid isPermaLink="false">http://blog.keyw0rk.net/?p=393</guid>
		<description><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

Go to:proxylister.keyw0rk.net
Why Use A Proxy?  Whenever you surf the internet your ip address is being logged by every website you visit. A simple check of web logs will show the ip address of everyone that visited a particular website. These logs can be kept for years, and can send a trace back to you! [...]]]></description>
			<content:encoded><![CDATA[<script language="Javascript">
	DD_roundies.addRule('div.arrondi', '15px');
</script>

<style type="text/css">
	<!-- 
	#formulaire_contact{
		margin:auto;
		border-radius:1em;
		-moz-border-radius:1em;
		-webkit-border-radius:1em;
	}

	#formulaire_contact fieldset{
		border:none;
	}
	
	#formulaire_contact legend{
		margin-top:0.3em;
		font-weight:bold;
		padding-top: 15px;
		padding-left: 15px;
		padding-bottom: 15px;
		text-align: left;
	}
	#formulaire_contact label{
		width:200px;
		text-align:right;
	}
	#formulaire_contact input, form select, form textarea{
		margin-bottom: 1em;
		margin-left:0.5em;
	}
	#formulaire_contact button{
		position:relative;
		left:160px;
	}
	
	#formulaire_contact span{
		width:110px;
		display:block;
		text-align:right;
	}
	
	#form_tableau {
		border:none;
		margin:0;
		background-color:transparent;
	}
	
	#form_td {
		border:none;
		background-color:transparent;
		vertical-align: top;
	}
	-->
</style>

<p><strong><span style="font-family: Verdana; font-size: x-small;">Go to:<a href="http://proxylister.keyw0rk.net">proxylister.keyw0rk.net</a></span></strong></p>
<p><strong><span style="font-family: Verdana; font-size: x-small;">Why Use A Proxy? </span></strong> <span style="font-family: Verdana; font-size: x-small;">Whenever you surf the internet your ip address is being logged by every website you visit. A simple check of web logs will show the ip address of everyone that visited a particular website. These logs can be kept for years, and can send a trace back to you! It&#8217;s not a matter of just covering your tracks as most of us have nothing to hide, it&#8217;s a matter of *privacy*. Your right to privacy is being compromised when browsing without a proxy.</span></p>
<p><strong><span style="font-family: Verdana; font-size: x-small;">Web-based Proxies</span></strong></p>
<p><span style="font-family: Verdana; font-size: x-small;">A web-based proxy is a service that allows you to bypass your own internet provider and browse using the proxy web-based website. All that you have to do is type the website address you would like to visit in the form they provide, and start browsing. Once you keep browsing using that form, you are protected and your *real* ip address is not being logged. There are many web based proxies to choose from. Start browsing using the featured selection.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.keyw0rk.net/webservices/proxy-lister/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
