<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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>login &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/login/</link>
	<description>Feed of posts on WordPress.com tagged "login"</description>
	<pubDate>Wed, 25 Nov 2009 11:04:30 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[sobre o chrome os]]></title>
<link>http://fiorix.wordpress.com/2009/11/24/sobre-o-chrome-os/</link>
<pubDate>Tue, 24 Nov 2009 17:23:44 +0000</pubDate>
<dc:creator>alef</dc:creator>
<guid>http://fiorix.wordpress.com/2009/11/24/sobre-o-chrome-os/</guid>
<description><![CDATA[Depois de todo o alvoroço sobre o Chrome OS, finalmente baixei e pude conferir. Usando este link, ti]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://fiorix.wordpress.com/files/2009/11/google-chrome-logo.jpg"><img class="alignleft size-thumbnail wp-image-383" title="google-chrome-logo" src="http://fiorix.wordpress.com/files/2009/11/google-chrome-logo.jpg?w=150" alt="" width="150" height="107" /></a>Depois de todo o alvoroço sobre o <a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html">Chrome OS,</a> finalmente baixei e pude conferir. Usando <a href="http://gdgt.com/google/chrome-os/download/">este link</a>, tive que criar uma conta e após confirmar o cadastro pelo email, pude baixar uma imagem de <a href="http://www.vmware.com/">VMware</a> e criei a máquina virtual usando o <a href="http://www.vmware.com/products/fusion/">Fusion</a>.</p>
<p>O boot é realmente rápido, e logo aparece a primeira tela: login. Procurei um pouco e descobri que o usuário e senha é o mesmo do <a href="https://www.google.com/accounts/">Google Accounts</a>. Porém, não funcionou pra mim, e tudo que consegui foi um erro informando: <em>Network not connected and offline login fail</em>.</p>
<p>Usando a rede da máquina virtual como NAT ou Bridge, não fez com que o login funcionasse. Procurando mais um pouco, encontrei a solução: usuário <em>chronos</em>, sem senha.</p>
<p>Usei um pouco, procurei algo sobre configuração de resolução, e nada. Também, não há botão algum para desligar ou reiniciar o sistema operacional. Logo, procurando um pouco mais, descobri como abrir um terminal: Ctrl-Alt-T. É um linux, bem simples e pequeno, com a interface baseada em GTK, e o <a href="http://code.google.com/chromium/">Chromium</a>.</p>
<p>Nada especial, mas essa simplicidade é bem interessante.</p>
<p><a href="http://fiorix.wordpress.com/files/2009/11/screen-shot-2009-11-24-at-3-14-07-pm.png"><img class="aligncenter size-medium wp-image-384" title="ChronOS main window" src="http://fiorix.wordpress.com/files/2009/11/screen-shot-2009-11-24-at-3-14-07-pm.png?w=300" alt="" width="300" height="171" /></a></p>
<p>Para virar root, pode-se usar o sudo, e a senha é <em>chronos</em>. Não tem muito o que fazer no terminal, apenas um <em>sudo reboot</em> ou <em>sudo halt</em>.</p>
<p>Curti.</p>
<p>Pra quem ainda não baixou o <a href="http://www.chromium.org/">Chromium</a>, aqui tem todos <em>snapshots</em> para os sistemas operacionais suportados: <a href="http://build.chromium.org/buildbot/snapshots/">http://build.chromium.org/buildbot/snapshots/</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Znalazłem...]]></title>
<link>http://bmwaddicted.wordpress.com/2009/11/24/znalazlem/</link>
<pubDate>Tue, 24 Nov 2009 14:33:25 +0000</pubDate>
<dc:creator>bmwaddicted</dc:creator>
<guid>http://bmwaddicted.wordpress.com/2009/11/24/znalazlem/</guid>
<description><![CDATA[Login i hasło do blogu! ;] Przypomniałem sobie, że w ogóle mam blog. Przez rok było wiele zmian. Mia]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Login i hasło do blogu! ;] Przypomniałem sobie, że w ogóle mam blog. Przez rok było wiele zmian. Miałem chyba z 10 telefonów. Dziewczyna nadal ta sama i teraz mieszka u mnie. Samochód nadal ten sam. I zwolniłem się z tej chorej firmy! Hura!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Un pensiero per chi non c'era ... e nota tecnica ...]]></title>
<link>http://cinmed.wordpress.com/2009/11/24/un-pensiero-per-chi-non-cera-e-nota-tecnica/</link>
<pubDate>Tue, 24 Nov 2009 10:09:02 +0000</pubDate>
<dc:creator>iamarf</dc:creator>
<guid>http://cinmed.wordpress.com/2009/11/24/un-pensiero-per-chi-non-cera-e-nota-tecnica/</guid>
<description><![CDATA[Insomma, il valore del blog sta anche nel fatto che consente a chi non ha potuto partecipare ad una ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Insomma, il valore del blog sta anche nel fatto che consente a chi non ha potuto partecipare ad una proiezione (come il sottoscritto l&#8217;ultima volta ed anche <a href="http://cinmed.wordpress.com/author/vivounmorire/">vivo un morire</a> e forse altri &#8230; io ci contavo &#8230;) di recuperare qualcosa di quello che è accaduto.</p>
<p>Non si tratta solo di intervenire per dire la cosa intelligente ma quello che si sente, quello che si è sentito, qualcosa sarà pur successo dentro alle persone?</p>
<p>Si può soprattutto trattare di esprimere quello che si è sentito per coloro che non c&#8217;erano &#8230; per gli altri e non sempre e solo per stessi &#8230;</p>
<hr />Sophie aveva riscontrato il problema di non riuscire più a scrivere un post. Può capitare di trovarsi fuori da un login.</p>
<p>Ho aggiunto a destra un widget per il controllo del login. Per riassumere ecco come appare il blog se non si è collegati al proprio account (ho evidenziato il nuovo widget)</p>
<p><a href="http://cinmed.wordpress.com/files/2009/11/cinmed1.png"><img class="aligncenter size-medium wp-image-192" title="cinmed1" src="http://cinmed.wordpress.com/files/2009/11/cinmed1.png?w=300" alt="" width="300" height="142" /></a></p>
<p>&#8230; e come appare invece quando si è collegati &#8230;</p>
<p><a href="http://cinmed.wordpress.com/files/2009/11/cinmed2.png"><img class="aligncenter size-medium wp-image-193" title="cinmed2" src="http://cinmed.wordpress.com/files/2009/11/cinmed2.png?w=300" alt="" width="300" height="151" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pesca a strascico - global '04-now]]></title>
<link>http://vurtland.wordpress.com/2009/11/23/pesca-a-strascico-global-04-now/</link>
<pubDate>Mon, 23 Nov 2009 17:18:43 +0000</pubDate>
<dc:creator>GM</dc:creator>
<guid>http://vurtland.wordpress.com/2009/11/23/pesca-a-strascico-global-04-now/</guid>
<description><![CDATA[Insomma, dopo poco su Facebook login feisbùk faccialibro, mi sono reso conto che non era il posto ch]]></description>
<content:encoded><![CDATA[Insomma, dopo poco su Facebook login feisbùk faccialibro, mi sono reso conto che non era il posto ch]]></content:encoded>
</item>
<item>
<title><![CDATA[Si comincia]]></title>
<link>http://vurtland.wordpress.com/2009/11/23/si-comincia/</link>
<pubDate>Mon, 23 Nov 2009 16:43:28 +0000</pubDate>
<dc:creator>GM</dc:creator>
<guid>http://vurtland.wordpress.com/2009/11/23/si-comincia/</guid>
<description><![CDATA[Sarà bene iniziare facendo un accesso a Facebook login. Ok siamo entrati. Siamo contenti e parliamo ]]></description>
<content:encoded><![CDATA[Sarà bene iniziare facendo un accesso a Facebook login. Ok siamo entrati. Siamo contenti e parliamo ]]></content:encoded>
</item>
<item>
<title><![CDATA[Wordpress en local avec MAMP et Mac OSX]]></title>
<link>http://laurentbourrelly.wordpress.com/2009/11/22/wordpress-en-local-avec-mamp-et-mac-osx/</link>
<pubDate>Sun, 22 Nov 2009 06:20:11 +0000</pubDate>
<dc:creator>laurentbourrelly</dc:creator>
<guid>http://laurentbourrelly.wordpress.com/2009/11/22/wordpress-en-local-avec-mamp-et-mac-osx/</guid>
<description><![CDATA[Il peut être extrêmement utile de travailler en local sur un blog WordPress. Pour adapter un thème, ]]></description>
<content:encoded><![CDATA[Il peut être extrêmement utile de travailler en local sur un blog WordPress. Pour adapter un thème, ]]></content:encoded>
</item>
<item>
<title><![CDATA[D2L Login Information Changing Monday Morning]]></title>
<link>http://ppccd2l.wordpress.com/2009/11/19/d2l-login-information-changing-monday-morning/</link>
<pubDate>Thu, 19 Nov 2009 21:43:30 +0000</pubDate>
<dc:creator>natewadman</dc:creator>
<guid>http://ppccd2l.wordpress.com/2009/11/19/d2l-login-information-changing-monday-morning/</guid>
<description><![CDATA[UPDATE 20Nov2009 &#8211; The password update has been postponed due to technical issues. As you know]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><b>UPDATE</b> 20Nov2009 &#8211; The password update has been postponed due to technical issues.</p>
<p>As you know, the portal is now open for PPCC students, faculty and staff at <a href="http://my.ppcc.edu/">http://my.ppcc.edu</a>. The first time students log into the portal they are prompted to change the PIN that they have been using to log into D2L and Blackboard to a password. There are links on the portal to both Blackboard and Desire2Learn that take them to their home pages—no other log in is required.</p>
<p>The portal includes links to all kinds of PPCC resources, including registration, and the overall plan is for all students to use the portal as the entry point for everything they do online at PPCC.</p>
<p>A change in how students are authenticated on the web will happen on Monday morning, and it might create some confusion for Desire2Learn. Please help us prevent that. Basically you need to remember three things:</p>
<ol>
<li>Students who have NOT accessed the portal and changed their password will see no difference in how they log into Desire2Learn this semester. They will use the same S# and PIN they have been using.</li>
<li>Students who have accessed the portal should use it as their entry to Desire2learn. They log into the portal, click on the Student tab, and then click on “ppccConnect” under D2L. This will take them directly to their D2L home page.</li>
<li>Students who have accessed the portal (and thus changed their password) will have to use the new password if they go to D2L directly by typing the URL or through their bookmarks. The old PIN will no longer work. Fabrizio is adding an explanation about this to the D2L login page, but we wanted you to know about it in case you get questions.</li>
</ol>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Inicio de sesion automatico en Windows 7]]></title>
<link>http://margotu.wordpress.com/2009/11/19/inicio-de-sesion-automatico-en-windows-7/</link>
<pubDate>Thu, 19 Nov 2009 09:42:06 +0000</pubDate>
<dc:creator>Javier Aparicio</dc:creator>
<guid>http://margotu.wordpress.com/2009/11/19/inicio-de-sesion-automatico-en-windows-7/</guid>
<description><![CDATA[Cada vez que se inicia la sesión nos pide el nombre de usuario y la contraseña, eso es muy útil cuan]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Cada vez que se <strong>inicia la sesión nos pide el nombre de usuario y la contraseña</strong>, eso es muy útil cuando son varias las personas las que tienen acceso al ordenador, pero algo incómodo si el ordenador es también de uso personal o bien deseamos tener un acceso para visitantes.</p>
<p><!--more--></p>
<p>Para evitar de introducir cada vez los datos, a continuación encontraréis como iniciar la sesión de arranque automáticamente.</p>
<p>Hay que tener en cuenta que configurar el inicio automático solo lo puede hacer el administrador del equipo.</p>
<p>Primero debemos abrir el  <strong>Menú de inicio</strong>, lo podemos hacer rápidamente pulsando simultáneamente <strong>Windows + R</strong>.</p>
<p>En el recuadro de búsqueda hay que escribir <em>netplwiz</em><strong> </strong>y pulsar <strong>Enter</strong>.</p>
<p>Seguidamente hay que hacer clic en el nombre de cuenta del usuario, de manera que quede resaltado, al que se permite el inicio automático.</p>
<p>Ahora con el mouse hay que desactivar el recuadro que indica: <em>Los usuarios deben introducir un nombre de usuario y contraseña para usar este</em><em> equipo. </em>(tal como se muestra en la imagen).</p>
<p><img src="http://www.windows-7.com.es/wp-content/uploads/windows-7.com.es/2009/11/inicio_sesion_windows7.png" alt="inicio_sesion_windows7" width="480" height="517" /></p>
<p>Pulsamos <strong>Aplicar</strong>, y el sistema nos pedirá confirmar la clave del usuario que previamente hemos resaltado (de esa forma <strong>deshabilitaremos que al iniciar sesión nos pida los datos</strong>). Una vez hecho esto pulsamos <strong>Aceptar</strong> y el proceso habrá finalizado.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mmmm, salty.]]></title>
<link>http://chimpy.wordpress.com/2009/11/18/mmmm-salty/</link>
<pubDate>Wed, 18 Nov 2009 17:09:00 +0000</pubDate>
<dc:creator>Mr Chimp</dc:creator>
<guid>http://chimpy.wordpress.com/2009/11/18/mmmm-salty/</guid>
<description><![CDATA[So you want a database of users, giving each one a username and password so that they can log into y]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>So you want a database of users, giving each one a username and password so that they can log into your website. There are lots of different ways you can do this. The simpler you make it the simpler it is to hack. So let&#8217;s make it difficult!</p>
<p><strong>The Easy Way</strong><br />
The simplest way to accomplish the above is this:</p>
<ol>
<li>Take the user name and password.</li>
<li>Put it in the database.</li>
<li>When they try to log in do something like this: &#8220;SELECT Count(id) FROM users WHERE username=&#8217;$givenusername&#8217; AND password=&#8217;$givenpassword&#8217;&#8221;</li>
<li>if $row[0] is &#62; 0 then the credentials are valid and the user can be logged in.</li>
</ol>
<p>This seems simple enough. Not very secure though. What if someone gains access to the database? They can instantly look up a user, find out their password and log in as them with no-one being any the wiser. Fair enough, you might think, but if someone&#8217;s looking at my database then there are bigger security problems to worry about than the log in. You&#8217;d have a point. Let&#8217;s say that you have a mate, Dave, who owns the server but doesn&#8217;t run the website. He has access to the database, finds the passwords and decides to be a prankster. Well done, Dave. Very funny. We need some extra security, I think.</p>
<p><strong>A Little Harder.</strong><br />
So, we want to make it so that, even if someone can see what&#8217;s stored in the database, they can&#8217;t use it to log into the site. So what we can do is make a <a href="http://en.wikipedia.org/wiki/Hash_function">hash</a> of the password and store that in the database instead of the plaintext password. A making a hash means taking the original string and applying some algorithm which results in a seemingly random string of characters. This string then <em>cannot</em> be transformed back into the original string. This is also sometimes known as one-way encryption, because it can be encrypted but not decrypted. NOTE: There are a lot of different hash algorithms, many of which are available in PHP. For the following examples I will use the SHA256 algorithm. There are lots of different hash algorithms about, I&#8217;ll let you figure out which one to use (hint: MD5 is pretty weak. SHA1 is probably OK for now, but you may as well use something stronger, it&#8217;s not hard!).</p>
<p>So now our process looks like this:</p>
<ol>
<li>Take the username and hashed password.</li>
<li>Put them in the database.</li>
<li>When someone logs in make a hash of the password.</li>
<li>Do something like this: &#8220;SELECT Count(id) FROM users WHERE username=&#8217;$givenusername&#8217; AND password=&#8217;$hashofgivenpassword&#8217;&#8221;</li>
<li>If $row[0] &#62; 0 then they&#8217;re allowed in.</li>
</ol>
<p>So now people can&#8217;t see the passwords even if they gain access to your database! Brilliant! So now we&#8217;re totally secure, right? Sure, unless the potential hacker has a rainbow table. What&#8217;s a rainbow table? Are you talking to yourself? Yes. Ok.</p>
<p><strong>Rainbow Tables</strong><br />
&#8220;What&#8217;s a rainbow table,&#8221; I hear myself ask. Imagine you wanted an easy way to figure out passwords from their hashes so that you could easily break into websites secured using our method above. What would you do? Well, for a start you could make a lookup table for common hash functions so that you look up the hash and find strings that they are made from. That would make it easy, wouldn&#8217;t it? Yes, it would. Yes, people do it. And, yes, that&#8217;s what a rainbow table is.</p>
<p>So how do we prevent someone from doing that? Well, for practical reasons rainbow tables only exist up to a certain length of input string. Let&#8217;s do some maths to illustrate. Let&#8217;s say we have 26 lower case letters, 26 upper case letters, 10 numeric digits, and 10 special characters from which we can create our password. That&#8217;s 72 characters in all. So for a string of length 1 we have 72 possibilities. For length 2 we have 72&#215;72. Let&#8217;s make PHP work it out for us:</p>
<pre class="brush: php;">
$chars = 72;
$max = 10;
for ($x=1;$x&#60;$max;$x++){
	$result = pow(72, $x);
	echo $x . ' = ' . number_format($result, 2) . '&#60;br&#62;';
}
</pre>
<p>Result:<br />
<code>1 = 72<br />
2 = 5,184<br />
3 = 373,248<br />
4 = 26,873,856<br />
5 = 1,934,917,632<br />
6 = 139,314,069,504<br />
7 = 10,030,613,004,288<br />
8 = 722,204,136,308,736<br />
9 = 51,998,697,814,228,992</code></p>
<p>So, if the password is 9 characters long then there will be several million million possibilities. This means that to store the rainbow table for all these hashes someone would need several petabytes of storage.</p>
<p>So, what? Only allow passwords over 9 characters long? Well that would help security overall, but it&#8217;s not the most elegant solution. For that we&#8217;re gonna need some salt.</p>
<p>At this point, you may be thinking &#8220;Really? Is it worth it?&#8221; and you&#8217;d have a point. Someone would already have to gain access to your database and spend however long it takes finding results in a rainbow table. When all&#8217;s said and done it depends on how secure you want to be. For a personal website you could probably get away with the above. However, if you&#8217;ve got a reasonably big user-base it&#8217;s nice to know that even if someone does hack their way in and has all the data laid out in front of them, they still wouldn&#8217;t be able to figure out the passwords. It doesn&#8217;t take much more to add that extra level of security. It&#8217;s also worth bearing in mind that there are plenty of people out there who would do it just because they can. The fact that your website is boring as hell and only contains information that you are interested in doesn&#8217;t mean that no-one will try and hack it.</p>
<p><strong>Mmmm, Salty: The Hard Way</strong><br />
To make it harder (or, hopefully, impossible) to find the password from the hash we add a <em>salt</em> to the password before we run it through the hash function. In fact, for the best security we use two salts &#8211; one we&#8217;ll keep the same from user to user (we&#8217;ll call this $master_salt) and one which will be generated per-user (we&#8217;ll call this $user_salt).</p>
<p>So what&#8217;s the process now?</p>
<ol>
<li>Take the username and password.</li>
<li>Hash the password.</li>
<li>Create a $user_salt by making a random number and hashing it.</li>
<li>Concatenate them together ($master_salt . $hashed_password . $user_salt). This gives us one very long string of random numbers and letters.</li>
<li>Make a hash of this string.</li>
<li>Store this hash <em>and the user hash</em> in the database.</li>
<li>When the user logs in, look up the user hash.</li>
<li>Make a hash of the given password.</li>
<li>Concatenate these together in the same way as when the password was made.</li>
<li>Try and get a row from the database: &#8220;SELECT Count(id) FROM users WHERE username = &#8216;givenusername&#8217; AND password = &#8216;biglonghashthatwejustmade&#8217;&#8221;</li>
<li>If $row[0] &#62; 1 then they&#8217;re allowed in</li>
</ol>
<p>As you can see there a lot more steps, but once you get your head around what&#8217;s actually happening it&#8217;s not that much more difficult.</p>
<p>Bear in mind that you don&#8217;t have to use the exact method as above, you can always obfuscate it even more. Some people use a hash of the username as the $user_hash. And then add 7. And hash it three more times using different algorithms. And write it backwards. It&#8217;s up to you.</p>
<p>Hopefully that makes some sense. I&#8217;ve now written more on the subject that I did for my entire A-levels, so I hope it was worth it!</p>
<p><strong>Hash Algorithms</strong><br />
PHP includes a lot of different algorithms for hashing. I&#8217;ve written a little script to give you an idea of what they all look like. It&#8217;s also quite useful if you need to make one-off hash by hand.</p>
<pre class="brush: plain;">
&#60;?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
	$input = $_POST['input'];
	foreach (hash_algos() as $algo){
		echo '&#60;b&#62;' . $algo . ':&#60;/b&#62; ' . hash($algo, $input) . '&#60;br&#62;';
	}
} ?&#62;
&#60;form action=&#34;#&#34; method=&#34;post&#34;&#62;
	&#60;input type=&#34;text&#34; name=&#34;input&#34;&#62;
	&#60;input type=&#34;submit&#34; name=&#34;submit&#34; value=&#34;submit&#34;&#62;
&#60;/form&#62;
</pre>
<p>Just type a word into the box and you&#8217;ll be a shown a list of all all the hashes available from your PHP installation. Lovely job!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Shopping Cart Improvement Study: Enhanced checkout flow &amp; increasing the throughput of transactions]]></title>
<link>http://dejardins.com/2009/11/18/shopping-cart-improvement-study-enhanced-checkout-flow-increasing-the-throughput-of-transactions/</link>
<pubDate>Wed, 18 Nov 2009 12:15:56 +0000</pubDate>
<dc:creator>Matthieu Dejardins</dc:creator>
<guid>http://dejardins.com/2009/11/18/shopping-cart-improvement-study-enhanced-checkout-flow-increasing-the-throughput-of-transactions/</guid>
<description><![CDATA[65% shopping cart abandonment rate w/ an average cart value of $109. This practical presentation is ]]></description>
<content:encoded><![CDATA[65% shopping cart abandonment rate w/ an average cart value of $109. This practical presentation is ]]></content:encoded>
</item>
<item>
<title><![CDATA[Lancement de myboolo]]></title>
<link>http://myboolo.wordpress.com/2009/11/16/lancement-de-myboolo/</link>
<pubDate>Mon, 16 Nov 2009 13:18:01 +0000</pubDate>
<dc:creator>Frédéric Debeck</dc:creator>
<guid>http://myboolo.wordpress.com/2009/11/16/lancement-de-myboolo/</guid>
<description><![CDATA[Lors du premier lancement de myboolo, votre logiciel se connecte automatiquement au site et va reche]]></description>
<content:encoded><![CDATA[Lors du premier lancement de myboolo, votre logiciel se connecte automatiquement au site et va reche]]></content:encoded>
</item>
<item>
<title><![CDATA[Xbox LIVE Update coming Nov. 17th]]></title>
<link>http://capsulecomputers.wordpress.com/2009/11/14/xbox-live-update-coming-nov-17th/</link>
<pubDate>Sat, 14 Nov 2009 11:27:43 +0000</pubDate>
<dc:creator>CapsuleComputers</dc:creator>
<guid>http://capsulecomputers.wordpress.com/2009/11/14/xbox-live-update-coming-nov-17th/</guid>
<description><![CDATA[I know some of  you are already enjoying many of these features through the Preview Program, Microso]]></description>
<content:encoded><![CDATA[I know some of  you are already enjoying many of these features through the Preview Program, Microso]]></content:encoded>
</item>
<item>
<title><![CDATA[Login SSH sin contraseña]]></title>
<link>http://byteinsanity.wordpress.com/2009/11/14/login-ssh-sin-contrasena/</link>
<pubDate>Sat, 14 Nov 2009 01:28:11 +0000</pubDate>
<dc:creator>darky00</dc:creator>
<guid>http://byteinsanity.wordpress.com/2009/11/14/login-ssh-sin-contrasena/</guid>
<description><![CDATA[Si tenemos un servidor remoto al que accedemos a través de SSH una forma mas fácil y segura de acced]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Si tenemos un servidor remoto al que accedemos a través de SSH una forma mas fácil y segura de acceder es utilizando claves RSA en vez de contraseñas.<br />
Las claves RSA son en realidad claves asimétricas por lo que se usan claves distintas para encriptar y desencriptar. Por esto cuando hablamos de claves RSA en realidad nos referimos a parejas de claves: una publica y otra privada.<br />
En nuestro caso empezaremos generando nuestras claves RSA, para esto ejecutaremos el comando:</p>
<pre class="brush: bash;">
$ ssh-keygen
</pre>
<p><a href="http://byteinsanity.wordpress.com/files/2009/11/ssh-keygen.png"><img class="aligncenter size-medium wp-image-229" title="ssh-keygen" src="http://byteinsanity.wordpress.com/files/2009/11/ssh-keygen.png?w=300" alt="ssh-keygen" width="300" height="180" /></a></p>
<p>Por defecto este comando nos genera claves de tipo RSA de 2048 bits. Respondiendo a todo con las opciones por defecto nos habrá generado 2 ficheros dentro de la carpeta <code>~/.shh</code>:</p>
<ul>
<li><strong>id_rsa</strong>: clave privada</li>
<li><strong>id_rsa.pub</strong>: clave publica</li>
</ul>
<p><a href="http://byteinsanity.wordpress.com/files/2009/11/carpeta_ssh.png"><img src="http://byteinsanity.wordpress.com/files/2009/11/carpeta_ssh.png?w=300" alt="carpeta_ssh" title="carpeta_ssh" width="300" height="74" class="aligncenter size-medium wp-image-231" /></a></p>
<p>El siguiente paso consiste en copiar la clave publica a la maquina remota a la que queremos poder conectar sin contraseña. La forma mas sencilla seria con el comando <code>scp</code> desde la maquina local:</p>
<pre class="brush: bash;">
$ scp ~/.ssh/id_rsa.pub usuarioremoto@maquinaremota:~
</pre>
<p>Ahora tenemos que acceder a la maquina remota y desde allí añadir nuestra clave publica al fichero <code>~/.ssh/authorized_keys</code>, para esto ejecutamos el siguiente comando en la maquina remota:</p>
<pre class="brush: bash;">
$ cat ~/id_rsa.pub &#62;&#62; ~/.ssh/authorized_keys
</pre>
<p>Con esto ya deberíamos ser capaces de acceder a la maquina remota desde nuestra maquina local sin introducir la contraseña, para comprobarlo ejecutamos:</p>
<pre class="brush: bash;">
$ ssh usuarioremoto@maquinaremota
</pre>
<p>Y ya deberíamos estar conectados en la maquina remota sin que nos pregunte la contraseña.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[First Exercise: Create simple PHP login]]></title>
<link>http://williambuell.wordpress.com/2009/11/13/first-exercise-create-simple-php-login/</link>
<pubDate>Fri, 13 Nov 2009 23:29:09 +0000</pubDate>
<dc:creator>William Buell</dc:creator>
<guid>http://williambuell.wordpress.com/2009/11/13/first-exercise-create-simple-php-login/</guid>
<description><![CDATA[There are so many tutorials to be found with Google. I chose this for my first exercise with PHPMYAD]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>There are so many tutorials to be found with Google.</p>
<p>I chose this for my first exercise with PHPMYADMIN</p>
<p>NOTE: This following link showed me how to EMBED code within my WordPress blog so that it will be displayed but not executed.</p>
<p><a href="http://en.support.wordpress.com/code/posting-source-code/" target="_blank">http://en.support.wordpress.com/code/posting-source-code/</a></p>
<p><a href="http://www.phpeasystep.com/phptu/6.html" target="_BLANK">http://www.phpeasystep.com/phptu/6.html</a></p>
<p>This morning by 6 a.m. I got to the point where PHPMYADMIN would come up in the browser by entering</p>
<p>http://localhost/phpmyadmin</p>
<p>(dont enter this in your browser because it only works on my machine, attaching to my local apache webserver)</p>
<p>After successfully logging into PHPMYADMIN which was not easy to figure out, and took many google searches, I was able to ADD<br />
myself as a superuser with all powers in MySQL.</p>
<p>Next, I logged out and logged back in with my user name and password.</p>
<p>The first think I did was create a new database called &#8220;test&#8221; because that&#8217;s what this particular tutorial uses.</p>
<p>The tutorial provides me with the code to CREATE a table called &#8220;members&#8221;</p>
<p>CREATE TABLE `members` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`username` varchar(65) NOT NULL default &#8221;,<br />
`password` varchar(65) NOT NULL default &#8221;,<br />
PRIMARY KEY (`id`)<br />
) TYPE=MyISAM AUTO_INCREMENT=2 ;</p>
<p>and then to insert one member row with the following code</p>
<p>INSERT INTO `members` VALUES (1, &#8216;john&#8217;, &#8216;1234&#8242;);</p>
<p>PHPADMIN HAS A WINDOW where I can copy and paste tutorial code and then execute it, so it is all pretty easy. The hard part is to learn it well enough to one day do it without tutorial instructions or notes or copy and paste.</p>
<p>My next task is to create a file in /var/www<br />
called &#8220;main_login.php&#8221;</p>
<p>I need to use the TERMINAL to do this, and I must issue each command preceded by &#8220;sudo&#8221; which will prompt me initially for my password, to prove I have rights to modify the Ubuntu system.</p>
<p>One of the first things I do after Ubuntu is configured is add TERMINAL to the launch pad at the top of the Ubuntu Desktop.</p>
<p>APPLICATIONS -&#62; ACCESSORIES -&#62; TERMINAL (right click) -&#62; ADD THIS LAUNCHER TO PANEL</p>
<p>ALWAYS REMEMBER THAT in TERMINAL if you have copied something and you want to PASTE IT, you position your cursor inside TERMINAL, click EDIT and select PASTE. CTRL V will not work<br />
in TERMINAL</p>
<p>Enter TERMINAL</p>
<p>sudo gedit /var/www/main_login.php</p>
<p>The GEDIT window will now open up and I can paste the following code from the tutorial:</p>
<table border="0" cellspacing="1" cellpadding="0" width="300" align="center" bgcolor="#cccccc">
<tbody>
<tr>
<td>
<table border="0" cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff">
<tbody>
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>PASTE THE FOLLOWING CODE:</p>
<pre class="brush: php;">

&#60;table width=&#34;300&#34; border=&#34;0&#34; align=&#34;center&#34; cellpadding=&#34;0&#34; cellspacing=&#34;1&#34; bgcolor=&#34;#CCCCCC&#34;&#62;
&#60;tr&#62;

&#60;td&#62;
&#60;table width=&#34;100%&#34; border=&#34;0&#34; cellpadding=&#34;3&#34; cellspacing=&#34;1&#34; bgcolor=&#34;#FFFFFF&#34;&#62;
&#60;tr&#62;
&#60;td colspan=&#34;3&#34;&#62;&#60;strong&#62;Member Login &#60;/strong&#62;&#60;/td&#62;
&#60;/tr&#62;
&#60;tr&#62;
&#60;td width=&#34;78&#34;&#62;Username&#60;/td&#62;
&#60;td width=&#34;6&#34;&#62;:&#60;/td&#62;
&#60;td width=&#34;294&#34;&#62;&#60;/td&#62;
&#60;/tr&#62;
&#60;tr&#62;
&#60;td&#62;Password&#60;/td&#62;
&#60;td&#62;:&#60;/td&#62;
&#60;td&#62;&#60;/td&#62;
&#60;/tr&#62;
&#60;tr&#62;
&#60;td&#62;&#38;nbsp;&#60;/td&#62;
&#60;td&#62;&#38;nbsp;&#60;/td&#62;
&#60;td&#62;&#60;/td&#62;
&#60;/tr&#62;
&#60;/table&#62;
&#60;/td&#62;

&#60;/tr&#62;
&#60;/table&#62;
&#60;/code&#62;
</pre>
<p>I save and close GEDIT and next I create a second php page:</p>
<p>sudo gedit /var/www/check_login.php</p>
<p>Again, the GEDIT window opens and I paste the code, BUT obviously I MUST CHANGE name and password in the example to MY name and MY password.</p>
<pre class="brush: php;">
 ############### Code

&#60;?php
$host=&#34;localhost&#34;; // Host name
$username=&#34;&#34;; // Mysql username
$password=&#34;&#34;; // Mysql password
$db_name=&#34;test&#34;; // Database name
$tbl_name=&#34;members&#34;; // Table name

// Connect to server and select databse.
mysql_connect(&#34;$host&#34;, &#34;$username&#34;, &#34;$password&#34;)or die(&#34;cannot connect&#34;);
mysql_select_db(&#34;$db_name&#34;)or die(&#34;cannot select DB&#34;);

// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql=&#34;SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'&#34;;
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file &#34;login_success.php&#34;
session_register(&#34;myusername&#34;);
session_register(&#34;mypassword&#34;);
header(&#34;location:login_success.php&#34;);
}
else {
echo &#34;Wrong Username or Password&#34;;
}
?&#62;
</pre>
<p>I click SAVE and quit GEDIT</p>
<p>NEXT,</p>
<p>sudo gedit /var/www/login_success.php</p>
<p>copy and paste this code:</p>
<pre class="brush: php;">
############### Code

// Check if session is not registered , redirect back to main page.
// Put this code in first line of web page.
&#60;?
session_start();
if(!session_is_registered(myusername)){
header(&#34;location:main_login.php&#34;);
}
?&#62;

&#60;html&#62;
&#60;body&#62;
Login Successful
&#60;/body&#62;
&#60;/html&#62;
</pre>
<p>SAVE and QUIT</p>
<p>sudo gedit /var/www/logout.php</p>
<p>PASTE THIS CODE:</p>
<pre class="brush: php;">
// Put this code in first line of web page.
&#60;?
session_start();
session_destroy();
?&#62;
</pre>
<p>SAVE AND QUIT</p>
<p>NEXT:</p>
<p>sudo gedit /var/www/checklogin.php</p>
<pre class="brush: php;">
############### Code

&#60;?php
ob_start();
$host=&#34;localhost&#34;; // Host name
$username=&#34;&#34;; // Mysql username
$password=&#34;&#34;; // Mysql password
$db_name=&#34;test&#34;; // Database name
$tbl_name=&#34;members&#34;; // Table name

// Connect to server and select databse.
mysql_connect(&#34;$host&#34;, &#34;$username&#34;, &#34;$password&#34;)or die(&#34;cannot connect&#34;);
mysql_select_db(&#34;$db_name&#34;)or die(&#34;cannot select DB&#34;);

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql=&#34;SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'&#34;;
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file &#34;login_success.php&#34;
session_register(&#34;myusername&#34;);
session_register(&#34;mypassword&#34;);
header(&#34;location:login_success.php&#34;);
}
else {
echo &#34;Wrong Username or Password&#34;;
}

ob_end_flush();
?&#62;
</pre>
<p>SAVE and QUIT</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Como escolher uma Password]]></title>
<link>http://omeublogsemiprofissional.wordpress.com/2009/11/13/como-escolher-uma-password/</link>
<pubDate>Fri, 13 Nov 2009 10:37:01 +0000</pubDate>
<dc:creator>TM</dc:creator>
<guid>http://omeublogsemiprofissional.wordpress.com/2009/11/13/como-escolher-uma-password/</guid>
<description><![CDATA[Vi utilidade em escrever este post quando li a notícia que divulgava a password mais comum utilizada]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Vi utilidade em escrever este post quando li a notícia que divulgava <a title="Most Common Hotmail Password Revealed!" href="http://www.wired.com/threatlevel/2009/10/10000-passwords?mbid=wir_newsltr" target="_blank">a password mais comum</a> utilizada no Hotmail: <strong><span style="color:#ff9900;">123456</span></strong>, entre outros dados semi-preocupantes.</p>
<p>Deixo então algumas práticas que podem tornar as vossas contas mais seguras:</p>
<p><strong>1. Não escolher a password 123456.</strong><br />
É a mais comum. A primeira que alguém experimentará quando tentar violar a vossa conta. O mesmo é válido para outras passwords óbvias como número de telefone, nome do/a namorado/a, do bichinho de estimação, etc.</p>
<p><strong>2. Passwords com mais de 6 caracteres.</strong><br />
Quanto mais melhor, mas não é preciso cair no exagero. Algumas plataformas limitam o número de caracteres.</p>
<p><strong>3. Passwords com caracteres diferentes: números, letras e, se possível, símbolos/pontuação (#,.!).</strong><br />
Algumas plataformas não permitem a utilização de símbolos, ou mesmo de dígitos, mas é uma questão se experimentar, pois aumenta exponencialmente o grau de segurança da password.</p>
<p><strong>4. Aleatoriedade</strong><br />
Em vez de uma palavra, uma combinação de caracteres que à partida não faça sentido.<br />
Por ex: TH192#.</p>
<p><strong>5. Passwords diferentes para plataformas diferentes. </strong><br />
Não vá alguém descobrir o vosso login para o Hotmail e a parti daí conseguir entrar em todos os restantes sites onde tenham conta.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Aggiorna lo status su Facebook e si salva dal carcere]]></title>
<link>http://rascarlo.wordpress.com/2009/11/13/aggiorna-lo-status-su-facebook-e-si-salva-dal-carcere/</link>
<pubDate>Fri, 13 Nov 2009 09:46:54 +0000</pubDate>
<dc:creator>Carlo Di Nuccio</dc:creator>
<guid>http://rascarlo.wordpress.com/2009/11/13/aggiorna-lo-status-su-facebook-e-si-salva-dal-carcere/</guid>
<description><![CDATA[Rodney Bradford (nypost.com) Rodney Bradford ha 19 anni e vive con la madre a Brooklyn, New York. Il]]></description>
<content:encoded><![CDATA[Rodney Bradford (nypost.com) Rodney Bradford ha 19 anni e vive con la madre a Brooklyn, New York. Il]]></content:encoded>
</item>
<item>
<title><![CDATA[Login Multi User Pada Windows XP]]></title>
<link>http://rockybalaibansaik.wordpress.com/2009/11/11/login-multi-user-pada-windows-xp/</link>
<pubDate>Wed, 11 Nov 2009 03:40:00 +0000</pubDate>
<dc:creator>rocky</dc:creator>
<guid>http://rockybalaibansaik.wordpress.com/2009/11/11/login-multi-user-pada-windows-xp/</guid>
<description><![CDATA[LOGIN MULTI USER PADA WINDOWS XP Keren sebetulnya yah, hanya saja, Windows hanya mengijinkan satu us]]></description>
<content:encoded><![CDATA[LOGIN MULTI USER PADA WINDOWS XP Keren sebetulnya yah, hanya saja, Windows hanya mengijinkan satu us]]></content:encoded>
</item>
<item>
<title><![CDATA[login]]></title>
<link>http://indimovi.wordpress.com/2009/11/11/login/</link>
<pubDate>Wed, 11 Nov 2009 01:28:37 +0000</pubDate>
<dc:creator>indimovi</dc:creator>
<guid>http://indimovi.wordpress.com/2009/11/11/login/</guid>
<description><![CDATA[login signup]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://indimovi.net/wp-login.php">login </a></p>
<p><a href="http://indimovi.net/wp-login.php?action=register">signup</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[New Login Screen!]]></title>
<link>http://clubpenguinqtkcheats.wordpress.com/2009/11/09/new-login-screen/</link>
<pubDate>Mon, 09 Nov 2009 20:58:45 +0000</pubDate>
<dc:creator>qx4penpalcp</dc:creator>
<guid>http://clubpenguinqtkcheats.wordpress.com/2009/11/09/new-login-screen/</guid>
<description><![CDATA[Hey CP Surfers! There is a new Club Penguin Screen on the Login page. Check it out! Pretty cool! It]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Hey CP Surfers! There is a new Club Penguin Screen on the Login page. Check it out!</p>
<p><img class="aligncenter size-full wp-image-1360" title="newlogin" src="http://clubpenguinqtkcheats.wordpress.com/files/2009/11/newlogin.jpg" alt="newlogin" width="468" height="227" /></p>
<p>Pretty cool! It&#8217;s all about Card-Jitsu Fire! But I have one question. Why Fire? I mean, Are they gonna find a Geyser and make a game called Card-Jitsu Water? Or a Mountin Top and call it Card-Jitsu Ice? What do you think?</p>
<p>~Qx4 Penpal</p>
<p><a href="http://twitter.com/qx4penpal"></a></p>
<h2 style="text-align:center;"><a href="http://twitter.com/qx4penpal"><strong>Follow Qx4 Penpal On Twitter!</strong></a></h2>
<p>&#160;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Slightly Secure PHP User Session Management (Login and Registration included)]]></title>
<link>http://sammaye.wordpress.com/2009/11/09/slightly-secure-php-user-session-management-login-and-registration-included/</link>
<pubDate>Mon, 09 Nov 2009 10:49:15 +0000</pubDate>
<dc:creator>sammaye</dc:creator>
<guid>http://sammaye.wordpress.com/2009/11/09/slightly-secure-php-user-session-management-login-and-registration-included/</guid>
<description><![CDATA[Tutorial Note: I was actually going to do an AJAX version but when I built and tested it I realised ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><b>Tutorial Note:</b> I was actually going to do an AJAX version but when I built and tested it I realised that there are still too many security holes. The most sure way to pass data is through the form POST itself and not through a 3rd party AJAX even if you are using JQuery to emulate POST (some advice for Joost there).</p>
<p>This tutorial will show the reader how to create a login and register (along with session management) script which implements medium level security. As a disclaimer I do state that (as noted in the headline) I do not endorse this as a super secure script and never will, however, security tips are welcome and will be appreciated. This script is intended for sites that do not need to store credit card details and such like. If you need to store details that could compromise users financial details then please look into SSL and stronger encryption and tougher rules on remembering users. I have not made a heavy script as heavy scripts do drain server resources and I don&#8217;t really need a heavy script (not making a shopping website).</p>
<p>First of all I would like the explain that most of this script came from a brilliant post on Dev Shed. I did heavily modify the script in places but if it wasn&#8217;t for Dev Shed I still would not have a clue how to make a decent login and user management script. Make sure to check out their tutorial <a href="http://www.devshed.com/c/a/PHP/Creating-a-Secure-PHP-Login-Script/">here</a>. This tutorial is, however, a bit broken in the sense that it takes quite some playing around to understand how it all works.</p>
<p>Okay, let us begin with setting up the server itself. If you want to replicate my example you will need extra components explained <a href="http://stagex.co.uk/wordpress/?p=52">here</a>. I will explain the main extension we need right now so that those who wish to just understand the script itself can without having to read an entirely new post before continuing with this one.</p>
<p>Let&#8217;s set-up the database now. We wish to add these tables to the DB:</p>
<pre class="brush: sql;">
--
-- Table structure for table `tblipbanned`
--

CREATE TABLE IF NOT EXISTS `tblipbanned` (
  `IP` varchar(25) NOT NULL,
  `TimeStamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`IP`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
</pre>
<pre class="brush: sql;">
--
-- Table structure for table `tbllogrecords`
--

CREATE TABLE IF NOT EXISTS `tbllogrecords` (
  `LoginID` int(11) NOT NULL auto_increment,
  `Username` varchar(250) NOT NULL,
  `TimeStamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `IP` varchar(50) NOT NULL,
  `Successful` varchar(2) NOT NULL,
  PRIMARY KEY  (`LoginID`,`Username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
</pre>
<pre class="brush: sql;">

--
-- Table structure for table `tbluser`
--

CREATE TABLE IF NOT EXISTS `tbluser` (
  `UserID` int(11) NOT NULL auto_increment,
  `Username` varchar(50) NOT NULL,
  `Password` varchar(250) NOT NULL,
  `Email` varchar(250) NOT NULL,
  `DateJoined` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `cookie` tinyint(1) NOT NULL default '0',
  `session` varchar(250) default NULL,
  `ip` varchar(250) default NULL,
  `Locked` varchar(6) NOT NULL default 'false',
  `Banned` varchar(6) NOT NULL default 'false',
  PRIMARY KEY  (`UserID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
</pre>
<p>Now a quick explanation on the tables. Most fields are self explanatory however, there may be a few that gets you thinking. There are a couple of redundant fields here since they allow for expansion of the script to cover more security issues. I believe the only table I really need to explain is &#8220;tbluser&#8221;, everything from cookie down needs explanation:</p>
<ul>
<li>cookie &#8211; This represents the presence of a cookie for remembering the user if they chose to be remembered (this is currently a redundant field, easy to utilise however).</li>
<li>session &#8211; This represents the session_id php variable which allow us to attach the user to one and only one session, good for shared server security.</li>
<li>ip &#8211; This allows us to log only one IP for the user, again good for security</li>
<li>Locked &#8211; This represents whether or not the account has been temporarily locked from being able to login.</li>
<li>Banned &#8211; This represents whether or not the account has been banned</li>
</ul>
<p>The main extension I use within this script is mcrypt. Let me explain a few things before I continue with my discussion on mcrypt:</p>
<ul>
<li>MD5 is NOT encryption</li>
<li>MD5 is NOT secure</li>
<li>MD5 IS NOT ENCRYPTION&#8230;..GET IT?!!!!</li>
</ul>
<p>I would strongly recommend never using md5 on a password. The purpose of md5 is to create a hash which displays (effectively) the sum of a files or words components. Yes, true, with m it is easy to get h but with h its hard to get m but not almost impossible and hackers can have your passwords in a matter of days. Let me sum up what md5 hash is in an example:</p>
<p><em>A website displays a file and a md5 hash. This md5 hash represents the correct md5 that should be formed should the file be real.</em> </p>
<p>Md5 hash is nothing more than a check&#8230;.does it sounds so secure now? Mcrypt overcomes this problem by providing encryption.</p>
<p>To install mcrypt you need to go to terminal and type:</p>
<pre class="brush: bash;">
sudo apt-get install php5-mcrypt
</pre>
<p>Once this is done you are ready to use mcrypt (don&#8217;t you just love how easy Linux is?).</p>
<p>Okay, I will now paste the source code to the session management script I use. After I will talk about login and registration.</p>
<pre class="brush: php;">
&#60;?php

	#filename: User.php

	#---------------------------------------------------------
	#	This file contains all the needed operations to manage
	#	user connections to the server.
	#
	#	Added security has been put into place to ensure saftey:
	#
	#		Session, database and cookie checking of sessions
	#		256 encryption of all passwords and unsetting of variables
	#			to ensure they are not left in buffer
	#		Log of attempted logins kept for logging purposes
	#		Locking of accounts which breach security protocols
	#		Safe gaurds against SQL injections (they get their hack
	#			as their username =P, serves them right, BIATCHES)
	#		And other added methods for ensuring smooth running at all times.
	#
	#
	#	Have fun and remember stay safe, stay paranoid.
	#---------------------------------------------------------

//class def
class User {	

	var $db = null; // PEAR::DB pointer
	var $failed = false; // failed login attempt
	var $date; // current date GMT
	var $id = 0; // the current user's id
	var $myKey = '';
	var $ip = '';
	var $msg = &#34;&#38;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&#34;;	

	//class function
	function User(&#38;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;$db) {
		$this-&#62;db = $db;
		$this-&#62;date = $GLOBALS['date'];
		$this-&#62;myKey = &#34;54M_i1lM4N&#34;;
		$this-&#62;ip = $_SERVER['REMOTE_ADDR'];
		$this-&#62;msg = &#34;&#38;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&#34;;
		//this is done every time a page is loaded
		if ($_SESSION['logged']) {
			//check the logged in user (mainly security checks)
			$this-&#62;_checkSession();
		} elseif ( isset($_COOKIE['stagex']) ) {
			//check for a cookie (this cookie is not persistent, it deletes on browser close)
			$this-&#62;_checkCookie($_COOKIE['stagex']);
		}
		if (!isset($_SESSION['uid']) ) {
			//if user aint logged in just set session variables to some null value.
			$this-&#62;session_defaults();
		}
	}

	//*************************
	// Basic Functions
	//*************************

	//check for banned IP
	function _banIP($banIp){

		$sql = &#34;INSERT INTO tblipbanned(IP) VALUES($banIp)&#34;;
		$this-&#62;db-&#62;query($sql);
	}

	//log the login attempt
	function _logAttempt($username, $successful){

		//this section will help the admin keep track of logs. This is especially useful in reports of hacker    		attacks.

		//make safe the variables, stop that poisoning
		$this-&#62;db-&#62;quote($successful);

		//write it to db
		$sql = &#34;INSERT INTO tbllogrecords(Username, IP, Successful) VALUES($username, '$this-&#62;ip', $successful)&#34;;	

		$this-&#62;db-&#62;query($sql);
	}

	//*****************
	// Encryption
	//*****************

	#Ooh kinky
	//this is the encryption. lindecrypt decrypts the pw whilst linEncrypt encrypts the pw
	function lindecrypt($enpass) {
		$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
		$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
		$decryptedpass = mcrypt_decrypt (MCRYPT_RIJNDAEL_256, $this-&#62;mykey, $enpass, MCRYPT_MODE_ECB, $iv);
		return rtrim($decryptedpass);
	}

	function getEncryptedPass($pass){
		return $this-&#62;linEncrypt($pass);
	}

	#Ooh spank me thrice and hand me to ma mamma
	function linEncrypt($pass) {
		$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
		$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); //Creating the vector
		$cryptedpass = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $this-&#62;mykey, $pass, MCRYPT_MODE_ECB, $iv);
		return $cryptedpass;
	}	

	function session_defaults() {
		//write to db or do nothing
		$_SESSION['logged'] = false;
		$_SESSION['uid'] = 0;
		$_SESSION['username'] = '';
		$_SESSION['cookie'] = 0;
		$_SESSION['remember'] = false;
	}

	//*****************
	// Error Handlers
	//*****************	

	//is account locked?
	function _isLocked($username){

		$username = $this-&#62;db-&#62;quote($username);
		//can I access my account?
		$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
		&#34;Username = $username&#34;;

		$result = $this-&#62;db-&#62;getRow($sql);

		//has account been disabled
		if ($result-&#62;Locked) {
			return true;
		}else{
			//phew
			return false;
		}
	}

	//is account banned?
	function _isBanned($username){

		$username = $this-&#62;db-&#62;quote($username);
		//can I access my account?
		$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
		&#34;Username = $username&#34;;

		$result = $this-&#62;db-&#62;getRow($sql);

		//has account been banned?
		if ($result-&#62;Banned) {
			return true;
		}else{
			//phew, better luck next time admin
			return false;
		}
	}

	//is ip banned?
	function _isIPBanned(){
		//check with the db
		$sql = &#34;SELECT * FROM tblipbanned WHERE &#34; .
		&#34;IP = '$this-&#62;ip'&#34;;

		$result = $this-&#62;db-&#62;getRow($sql);

		if( is_object($result) ){
			return true;
		}
	}

	function _getFailed(){
		return failed;
	}

	//error check to see if user exist
	function _userExist($username){

		$username = $this-&#62;db-&#62;quote($username);

		$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
			&#34;(Username = $username)&#34;;

		$result = $this-&#62;db-&#62;getRow($sql);

		if (is_object($result) ) {
			return true;
		}
	}

	//error check to see if email exist
	function _emailExist($email){
		$email = $this-&#62;db-&#62;quote($email);

		$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
			&#34;(Email = $email)&#34;;

		$result = $this-&#62;db-&#62;getRow($sql);

		if (is_object($result) ) {
			return true;
		}
	}

	//***************
	// Actual Script
	//***************

	//check a user login (post login)
	function _checkLogin($username, $password, $remember) {
		//check ip ban catalogue
			$sql = &#34;SELECT * FROM tblipbanned WHERE &#34; .
				&#34;(IP = '$this-&#62;ip')&#34;;			

			$result = $this-&#62;db-&#62;getRow($sql);

			if(is_object($result)){
				return false;
			}

		$unquotedUser = $username;

		//prepare the variables
		$username = $this-&#62;db-&#62;quote($username);
		$password = $this-&#62;db-&#62;quote($password);
		$password = $this-&#62;db-&#62;quote($this-&#62;getEncryptedPass($password));

			$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
			&#34;Username = $username AND &#34; .
			&#34;Password = $password&#34;;

			$result = $this-&#62;db-&#62;getRow($sql);

			//has account been disabled?
			if($result-&#62;Banned == &#34;false&#34; &#38;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;&#38;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; $result-&#62;Locked == &#34;false&#34;){
				//does this user already exist as a logged user?
				if ( is_object($result) ) {
					$this-&#62;_logAttempt($username, true);
					$this-&#62;_setSession($result, $remember);
					setcookie(&#34;stagex&#34;, $unquotedUser);
					return true;
				} else {
					//write to login table for record keeping
					$this-&#62;_logAttempt($username, false);
					$this-&#62;failed = true;
					$this-&#62;_logout();
					return false;
				}
			}else{
				return false;
			}
	} 

	//set the session if login check succeeds
	function _setSession(&#38;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;$values, $remember, $init = true) {
		//write to db
		$this-&#62;id = $values-&#62;UserID;
		$_SESSION['uid'] = $this-&#62;id;
		$_SESSION['username'] = htmlspecialchars($values-&#62;Username);
		$_SESSION['cookie'] = $values-&#62;cookie;
		$_SESSION['logged'] = true;

		if ($init) {

			$session = $this-&#62;db-&#62;quote(session_id());

			$sql = &#34;UPDATE tbluser SET session = $session, ip = '$this-&#62;ip' WHERE &#34; .
			&#34;UserID = $this-&#62;id&#34;;
			$this-&#62;db-&#62;query($sql);
		}
	} 

	//check cookie contents
	function _checkCookie($cookie){
		if(!$cookie) return;

		$cookie = $this-&#62;db-&#62;quote($cookie);

		$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
			&#34;Username = $cookie&#34;;

		$result = $this-&#62;db-&#62;getRow($sql);

		if(is_object($result)){
			$this-&#62;_setSession($result, true);
		}
	}

	//destroy cookie prematurely
	function _destroyCookie(){
		setcookie(&#34;stagex&#34;, &#34;&#34;, time() - 3600);
	}

	//check user session
	function _checkSession() {
		$username = $this-&#62;db-&#62;quote($_SESSION['username']);
		$cookie = $this-&#62;db-&#62;quote($_SESSION['cookie']);
		$session = $this-&#62;db-&#62;quote(session_id());
		$thiip = $this-&#62;db-&#62;quote($_SERVER['REMOTE_ADDR']);

		$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
		&#34;Username = $username AND &#34; .
		&#34;session = $session AND (ip = $thiip)&#34;;

		$result = $this-&#62;db-&#62;getRow($sql);

		if (is_object($result) ) {
			$this-&#62;_setSession($result, false, false);
		} else {
			$this-&#62;_logout();
		}
	} 

	//log the user out
	function _logout(){
		session_unset();
		$id = session_id();
		session_regenerate_id();

		$this-&#62;session_defaults();
		$newid = $this-&#62;db-&#62;quote($id);
        $sql = &#34;DELETE FROM `sessions` WHERE `session_id` = $newid&#34;;

       //and again
       $this-&#62;db-&#62;query($sql);
       $this-&#62;_destroyCookie();
       return true;
	}

	//register da user
	function _registerUser($username, $password, $email, $c_Origin, $g_Sex, $b_yearBirth){

		if(!$_SESSION['logged']){
			$unquotedpw = $password;
			$unquotedusername = $username;
			//quote the data so no injections
			$country = $this-&#62;db-&#62;quote($c_Origin);
			$gender = $this-&#62;db-&#62;quote($g_Sex);
			$birthyear = $this-&#62;db-&#62;quote($b_yearBirth);
			$username = $this-&#62;db-&#62;quote($username);
			$password = $this-&#62;db-&#62;quote($password);
			$email = $this-&#62;db-&#62;quote($email);

			$sql = &#34;SELECT * FROM tblipbanned WHERE &#34; .
				&#34;(IP = '$ip')&#34;;			

			$result = $this-&#62;db-&#62;getRow($sql);

			if(is_object($result)){
				return false;
			}

			//check duplicate users
			$sql = &#34;SELECT * FROM tbluser WHERE &#34; .
				&#34;(Username = $username)&#34;;

			$result = $this-&#62;db-&#62;getRow($sql);

			if (is_object($result) ) {
				return false;

			} else {

				//make checking for duplicate emails seperate transaction to loop through table again
				//without user variable having an effect on results.
				$emailSql = &#34;SELECT * FROM tbluser WHERE &#34; .
				&#34;(Email = $email)&#34;;

				$emailResult = $this-&#62;db-&#62;getRow($emailSql);

				if(is_object($emailResult)){
					return false;
				}
			}

			//encrypt pw
			$encryptedpw = $this-&#62;db-&#62;quote($this-&#62;getEncryptedPass($password));

			//write to db
			$insertSql = &#34;INSERT INTO tbluser(Username, Password, Email, Country, Gender, BirthYear) VALUES($username, $encryptedpw, $email, $country, $gender, $birthyear)&#34;;
			$this-&#62;db-&#62;query($insertSql);

			//log user in
			if($this-&#62;_checkLogin($unquotedusername,$unquotedpw,$_SESSION['cookie'])){
				return true;
			}else{
				return false;
			}
		}else{
			return false;
		}
	}

	//recover da details
    function _recoverDetails($userEmail){

        $sql = &#34;SELECT * FROM tbluser WHERE Email = $userEmail&#34;;

        $result = $this-&#62;db-&#62;getRow($sql);

        if (is_object($result)){
          $to      = $userEmail;
          $subject = 'Your StageX Account Details';
          $message = 'hello '.$result-&#62;Username.'\nShown below are your account details for the StageX video site.\nUsername: '.$result-&#62;Username.'\nPassword: '.$this-&#62;lindecrypt($result-&#62;Password).'\nWe would like to strongely recommend that you change your password upon logging into the site.\nThank you\nStageX Team';
          $headers = 'From: no-reply@stagex.com';
          mail($to,$subject,$message,$headers);
          return true;
        }else{
          return false;
        }
    }
?&#62;
</pre>
<p>I just drew up the recover details function very quickly, however, it is correct (just needs the information within it updating). This is the user.php script this controls how the user is seen on the site, whether a guest or a registered user or even maybe administrator.</p>
<p>The comments should explain the script well enough so now I will move onto logging in/out and registering. I will begin with the simplest of script, logout:</p>
<pre class="brush: php;">
&#60;?php
//header includes the include method for user class and instantiating the user class
include('includes/header.php');

	//access the user class function _logout
	$user-&#62;_logout();
       //redirect home
	   header(&#34;Location: index.php&#34;);

?&#62;
</pre>
<p>And for the login:</p>
<pre class="brush: php;">
&#60;?php
require_once('includes/header.php');

//ignore this I will add a post about checking empty post fields on the fly soon.
$req_fields = array(&#34;txtUserId&#34;=&#62;&#34;Username&#34;, &#34;txtPassword&#34;=&#62;&#34;Password&#34;);

//I just called the button on my login form any old piece of crap
if(isset($_POST['Loginforuserthingy'])){
	//if not logged in
	if(!$_SESSION['logged']){
		if(check_empty_fields()){
			//access user class _checklogin to check the login
			if($user-&#62;_checkLogin($_POST[&#34;txtUserId&#34;], $_POST[&#34;txtPassword&#34;], false)){
				header(&#34;Location: usrcp?home.php&#34;);
			}else{
				//understand what error was thrown
				if($user-&#62;_isIPBanned()){
					$smarty-&#62;assign('loginError', &#34;Your IP has been banned. If this has been done in mistake please contact the administrator.&#34;);
				}
				if($user-&#62;_getFailed()){
					$smarty-&#62;assign('loginError', &#34;Incorrect Username or Password provided.&#34;);
				}elseif($user-&#62;_isLocked($_POST['txtUserId'])){
					$error = &#34;Your account has been locked. Please contact an administrator.&#34;;
					$smarty-&#62;assign('loginError', $error);
				}elseif($user-&#62;_isBanned($_POST['txtUserId'])){
					$smarty-&#62;assign('loginError', &#34;Your account has been banned. It is also possible that your IP has been banned, however ,you can try registering again hoping it isn't.&#34;);
				}

			}
		}else{
			$smarty-&#62;assign('loginError', $msg);
		}
	}else{
		header(&#34;Location: usrcp.php?home&#34;);
	}
}

//if logged in
if($_SESSION['logged']){
	header(&#34;Location: usrcp.php?home&#34;);
}else{
	$smarty-&#62;display('login.php');
}

?&#62;
</pre>
<p>In order to use login and logout you need a index.php with some text that only the user can see. When the user is logged in there is a link that redirects the user to the logout page. That logout page then logs them out. The login page would contain 3 elements, a username box &#8220;txtUserId&#8221;, a password box &#8220;txtPassword&#8221; and a button which I have conveniently named &#8220;Loginforuserthingy&#8221;. The form then redirects to this page and that&#8217;s how the login page works.</p>
<p>This would be very, very, very easy to update as an AJAX page. You would just have a JQuery AJAX method (JQuery is best for AJAX has many extras outside of normal AJAX coding) which then polls the login.php script you see above. This page would return a JSON response depending on whether there was an error or not. If you want this script posted just say so (I might post it anyway). This same rule with AJAX applies to the registration page too.</p>
<p>I&#8217;m going to skip a bit on registration page since the login shows the full extent of checks and so I&#8217;m just going to cut to the chase.</p>
<pre class="brush: php;">
			    if($user-&#62;_registerUser($username, $password, $email, $country, $gender, $birthyear)){
				    header(&#34;Location: usrcp.php&#34;);
			    }else{
				    if($user-&#62;_isIPBanned()){
					    $smarty-&#62;assign('registerError', &#34;Your IP has been banned. If this has been done in mistake please contact the administrator.&#34;);
				    }elseif($user-&#62;_userExist($username)){
					    $smarty-&#62;assign('registerError', &#34;That username already exists please choose another. Be sure to use the inbuilt username checker before you post this form.&#34;);
					    $smarty-&#62;assign('user', '');
				    }elseif($user-&#62;_emailExist($email)){
					    $smarty-&#62;assign('registerError', &#34;That email is already registered. Please either use account recovery or another email.&#34;);
					    $smarty-&#62;assign('email', '');
					    $smarty-&#62;assign('conemail', '');
			    }
</pre>
<p>You can see I use _registerUser method to register the user supplying the different variables as needed. If the registration fails I once again (just like the login script) seek the reason.</p>
<p>So now with the new knowledge at hand you should be able to create some sort of security on your login scripts, however, don&#8217;t be fooled this is not a secure script and if you ask me there is no such thing.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The top 5 questions to ask about editing your website ]]></title>
<link>http://passionateweb.wordpress.com/2009/11/08/the-top-5-questions-to-ask-about-editing-your-website/</link>
<pubDate>Sun, 08 Nov 2009 15:01:18 +0000</pubDate>
<dc:creator>alisonsilbert</dc:creator>
<guid>http://passionateweb.wordpress.com/2009/11/08/the-top-5-questions-to-ask-about-editing-your-website/</guid>
<description><![CDATA[After a week of back and forth helping a client figure out what her website hosting account access i]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>After a week of back and forth helping a client figure out what her website hosting account access information is and how to interpret the responses of the hosting company staff, I thought I&#8217;d write a quick post about it. For those of you who have a website, want to edit it but don&#8217;t know how, here are some quick &#38; easy questions to ask your hosting company or website developer:</p>
<ul>
<li>what is the contact information for my website developer &#38; hosting company?</li>
<li>what is my account access information (login username and password) for hosting &#38; domain name?</li>
</ul>
<p>Once you have the hosting company&#8217;s information and your account information, you can start to determine what is the nature of the problem. Some common issues with website editing are:</p>
<ul>
<li>How do I figure out which file to edit?</li>
<li>How can I edit the web pages myself?</li>
<li>How can I collect names from my website?</li>
</ul>
<p>If you or someone you know have any of the above questions at the moment, or know you will be addressing these questions in the near future, <strong><a title="Blog Followup: service inquiry" href="mailto:info@passionateweb.ca" target="_blank">contact us</a> today</strong> for your <strong>free situation analysis and suggestions overview</strong>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ciò che appare in facebook dopo che una persona vuole notificare i links e i video da lei pubblicati antecedentemente sulla propria pagina]]></title>
<link>http://meryluiseastrologa.wordpress.com/2009/11/07/cio-che-appare-in-facebook-dopo-che-una-persona-vuole-notificare-i-links-e-i-video-da-lei-pubblicati-antecedentemente-sulla-propria-pagina/</link>
<pubDate>Sat, 07 Nov 2009 15:35:25 +0000</pubDate>
<dc:creator>Meryluise Astrologa</dc:creator>
<guid>http://meryluiseastrologa.wordpress.com/2009/11/07/cio-che-appare-in-facebook-dopo-che-una-persona-vuole-notificare-i-links-e-i-video-da-lei-pubblicati-antecedentemente-sulla-propria-pagina/</guid>
<description><![CDATA[Fermati! Stai perseverando con un comportamento che potrebbe essere considerato fastidioso o offensi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h2>Fermati! Stai perseverando con un comportamento che potrebbe essere considerato fastidioso o offensivo da altri utenti.</h2>
<div id="text_expose_id_4af592f2284f148962257"><a rel="nofollow" href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.google.it%2Fsearch%3Fq%3DMeryluise%2BAstrologa%26pov%3D110492242679294535743%26usg%3D__x8t7-wN3kotbJf0k1QiQbjApstw%3D%26hl%3Dit&#38;h=ec93e9163177fd537c8d981955551a77" target="_blank">http://www.google.it/search?q=Meryluise+Astrologa&#38;pov=110492242679294535743&#38;usg=__x8t7-wN3kotbJf0k1QiQbjApstw=&#38;hl=it</a></div>
<div>
<div>You have been blocked from commenting on public posts because you repeatedly misused this feature. This block will last anywhere from a few hours to a few days. When you are allowed to reuse this feature, please proceed with caution. Further misuse may result in your account being permanently disabled. For further information, please visit our <a href="http://www.facebook.com/help.php?page=421">Pagina delle FAQ</a>.</div>
</div>
</div>]]></content:encoded>
</item>

</channel>
</rss>
