<?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>The Blog of a WebDeveloper &#187; Segurança</title>
	<atom:link href="http://joaopedropereira.com/blog/category/seguranca/feed/" rel="self" type="application/rss+xml" />
	<link>http://joaopedropereira.com/blog</link>
	<description>Um novo estilo de desenvolvimento</description>
	<lastBuildDate>Tue, 27 Jul 2010 23:06:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>PHP Security Check-List CheatSheet</title>
		<link>http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/</link>
		<comments>http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 13:41:56 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[cheatsheet]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=743</guid>
		<description><![CDATA[Para cada projecto que tenho desenvolvido ultimamente utilizando a linguagem de programação server-side PHP, tenho-me guiado por uma checklist de forma a não me esquecer  de nada evitando assim falhas graves nas aplicações que desenvolvo. Pois a segurança é uma das preocupações que tenho. Esta checklist aborda diversas situações como, casos gerais, casos de input, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F04%2F18%2Fphp-security-check-list-cheatsheet%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F04%2F18%2Fphp-security-check-list-cheatsheet%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Para cada projecto que tenho desenvolvido ultimamente utilizando a linguagem de programação server-side PHP, tenho-me guiado por uma checklist de forma a não me esquecer  de nada evitando assim falhas graves nas aplicações que desenvolvo. Pois a segurança é uma das preocupações que tenho.</p>
<p>Esta checklist aborda diversas situações como, casos gerais, casos de input, file uploads, autenticação, entre outros.</p>
<div id="attachment_744" class="wp-caption aligncenter" style="width: 234px"><a href="http://joaopedropereira.com/files/phpsec_cheatsheet.pdf"><img class="size-medium wp-image-744" title="PHP Security CheckList" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/04/phpsec_cheatsheet-224x300.png" alt="" width="224" height="300" /></a><p class="wp-caption-text">Click on image to download</p></div>
<p>Recomendo vivamente a sua utilização e até sugestões de melhorias, apesar de ela não ser da minha autoria.</p>
<p>O que acham desta checklist? Conhecem alguma melhor? Como se guiam no desenvolvimento de aplicações web de forma  a manter a segurança da mesma?</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;n=PHP+Security+Check-List+CheatSheet&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;t=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=PHP+Security+Check-List+CheatSheet&amp;link=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet&amp;srcUrl=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;srcTitle=PHP+Security+Check-List+CheatSheet&amp;snippet=Para%20cada%20projecto%20que%20tenho%20desenvolvido%20ultimamente%20utilizando%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20server-side%20PHP%2C%20tenho-me%20guiado%20por%20uma%20checklist%20de%20forma%20a%20n%C3%A3o%20me%20esquecer%20%C2%A0de%20nada%20evitando%20assim%20falhas%20graves%20nas%20aplica%C3%A7%C3%B5es%20que%20desenvolvo.%20Pois%20a%20seguran%C3%A7a%20%C3%A9%20uma%20das%20preocupa%C3%A7%C3%B5es%20que%20tenho.%0D" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet&amp;summary=Para%20cada%20projecto%20que%20tenho%20desenvolvido%20ultimamente%20utilizando%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20server-side%20PHP%2C%20tenho-me%20guiado%20por%20uma%20checklist%20de%20forma%20a%20n%C3%A3o%20me%20esquecer%20%C2%A0de%20nada%20evitando%20assim%20falhas%20graves%20nas%20aplica%C3%A7%C3%B5es%20que%20desenvolvo.%20Pois%20a%20seguran%C3%A7a%20%C3%A9%20uma%20das%20preocupa%C3%A7%C3%B5es%20que%20tenho.%0D&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22PHP%20Security%20Check-List%20CheatSheet%22&amp;body=Link: http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Para%20cada%20projecto%20que%20tenho%20desenvolvido%20ultimamente%20utilizando%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20server-side%20PHP%2C%20tenho-me%20guiado%20por%20uma%20checklist%20de%20forma%20a%20n%C3%A3o%20me%20esquecer%20%C2%A0de%20nada%20evitando%20assim%20falhas%20graves%20nas%20aplica%C3%A7%C3%B5es%20que%20desenvolvo.%20Pois%20a%20seguran%C3%A7a%20%C3%A9%20uma%20das%20preocupa%C3%A7%C3%B5es%20que%20tenho.%0D" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=PHP+Security+Check-List+CheatSheet&amp;url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;h=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=PHP+Security+Check-List+CheatSheet&amp;du=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;cn=Para%20cada%20projecto%20que%20tenho%20desenvolvido%20ultimamente%20utilizando%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20server-side%20PHP%2C%20tenho-me%20guiado%20por%20uma%20checklist%20de%20forma%20a%20n%C3%A3o%20me%20esquecer%20%C2%A0de%20nada%20evitando%20assim%20falhas%20graves%20nas%20aplica%C3%A7%C3%B5es%20que%20desenvolvo.%20Pois%20a%20seguran%C3%A7a%20%C3%A9%20uma%20das%20preocupa%C3%A7%C3%B5es%20que%20tenho.%0D" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;title=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/+&quot;PHP+Security+Check-List+CheatSheet&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F04%2F18%2Fphp-security-check-list-cheatsheet%2F&amp;t=PHP+Security+Check-List+CheatSheet" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=PHP+Security+Check-List+CheatSheet+-+http://bit.ly/d1Kn1b&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/&amp;submitHeadline=PHP+Security+Check-List+CheatSheet&amp;submitSummary=Para%20cada%20projecto%20que%20tenho%20desenvolvido%20ultimamente%20utilizando%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20server-side%20PHP%2C%20tenho-me%20guiado%20por%20uma%20checklist%20de%20forma%20a%20n%C3%A3o%20me%20esquecer%20%C2%A0de%20nada%20evitando%20assim%20falhas%20graves%20nas%20aplica%C3%A7%C3%B5es%20que%20desenvolvo.%20Pois%20a%20seguran%C3%A7a%20%C3%A9%20uma%20das%20preocupa%C3%A7%C3%B5es%20que%20tenho.%0D&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=PHP+Security+Check-List+CheatSheet&amp;body=Link: http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Para%20cada%20projecto%20que%20tenho%20desenvolvido%20ultimamente%20utilizando%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20server-side%20PHP%2C%20tenho-me%20guiado%20por%20uma%20checklist%20de%20forma%20a%20n%C3%A3o%20me%20esquecer%20%C2%A0de%20nada%20evitando%20assim%20falhas%20graves%20nas%20aplica%C3%A7%C3%B5es%20que%20desenvolvo.%20Pois%20a%20seguran%C3%A7a%20%C3%A9%20uma%20das%20preocupa%C3%A7%C3%B5es%20que%20tenho.%0D" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2010/04/18/php-security-check-list-cheatsheet/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Vulnerabilidades Site Novas Oportunidades</title>
		<link>http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/</link>
		<comments>http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 14:43:23 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[vulnerabilidade]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=722</guid>
		<description><![CDATA[Já há algum tempo que tenho andado a investigar sites nacionais em busca de falhas de segurança e quase todos as têm, as mais frequentes são as falhas XSS mas também é muito comum encontrar falhas de SQL Injection. Hoje tive acesso através de um tweet do Público (http://bit.ly/aU0kuy) à informação de que o site [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F03%2F08%2Fvulnerabilidades-site-novas-oportunidades%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F03%2F08%2Fvulnerabilidades-site-novas-oportunidades%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Já há algum tempo que tenho andado a investigar sites nacionais em busca de falhas de segurança e quase todos as têm, as mais frequentes são as falhas XSS mas também é muito comum encontrar falhas de SQL Injection.</p>
<p style="text-align: center;"><a href="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/logo.png"><img class="size-full wp-image-728 aligncenter" title="Novas Oportunidades" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/logo.png" alt="" width="301" height="157" /></a></p>
<p>Hoje tive acesso através de um tweet do Público (<a title="Site das Novas Oportunidades atacado por hacker" href="http://bit.ly/aU0kuy" target="_blank">http://bit.ly/aU0kuy</a>) à informação de que o site das <a title="Novas Oportunidades" href="http://www.novasoportunidades.gov.pt/" target="_blank">Novas Oportunidades</a> tinha sido explorado e alterado por  alguém&#8230; Decidi então enquanto era tempo verificar as falhas que existiam no site e qual o meu espanto (not) quando vejo presentes falhas de XSS, falhas de SQL Injection e falhas de validação de parâmetros que permitem Impersonation Attack através de injecção de URL.</p>
<p>O ataque relatado pelo público foi feito através de SQL Injection possivelmente na página seguinte pois esta está totalmente aberta a ataques deste género: <a href="http://testemunhos.novasoportunidades.gov.pt/detalhe_video.aspx?id=9&amp;tipo=1" target="_blank" class="broken_link">http://testemunhos.novasoportunidades.gov.pt/detalhe_video.aspx</a></p>
<p><a href="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/Screenshot-3.png"><img class="aligncenter size-thumbnail wp-image-736" title="Novas Oportunidades SQL Injection" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/Screenshot-3-150x150.png" alt="" width="150" height="150" /></a></p>
<p>O ataque que referi relativo a problemas de validação de parâmetros que permitem injecção de URL: <a href="http://www.novasoportunidades.gov.pt/outerFrame.jsp?link=http://joaopedropereira.com/blog/ " target="_blank">http://www.novasoportunidades.gov.pt/outerFrame.jsp?link=http://joaopedropereira.com/blog/</a></p>
<p><a href="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/Screenshot-2.png"><img class="aligncenter size-thumbnail wp-image-735" title="Novas Oportunidades Impersonation Attack" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/Screenshot-2-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Com alguma imaginação pode-se fazer alguns ataques interessantes a partir daqui&#8230;</p>
<p>Na pesquisa também podemos facilmente fazer ataques de XSS (Cross Site Scripting) como referi anteriormente: <a href="http://www.novasoportunidades.gov.pt/np4/q?q=%3Cscript%3Ealert%28%22The+Blog+of+a+WebDeveloper%22%29%3C%2Fscript%3E" target="_blank">http://www.novasoportunidades.gov.pt/np4/q?q=%3Cscript%3Ealert%28%22The+Blog+of+a+WebDeveloper%22%29%3C%2Fscript%3E</a></p>
<p><a href="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/Screenshot-1.png"><img class="aligncenter size-thumbnail wp-image-734" title="Novas Oportunidades XSS Attack" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/03/Screenshot-1-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Isto mostra a preparação e conhecimentos ao nível de segurança informática que os WebDevelopers que o estado contrata têm&#8230; Atenção este não é o único site governamental com problemas graves de segurança, existem mais e talvez que transaccionem dados mais importantes&#8230;</p>
<p><strong><span style="text-decoration: underline;">Nota</span></strong>: Este post não tem como intuito incentivar qualquer tipo de ataque informático, pretende apenas informar e alertar para os problemas informáticos que podem surgir num futuro nas infraestruturas governamentais (e não só). É importante ter as nossas plataformas o mais seguras possíveis, para não sermos surpreendidos um dia.</p>
<p><strong><span style="text-decoration: underline;">EDIT</span></strong></p>
<p>As falhas estão a ser corrigidas, quase completas por isso para registo futuro adicionei screenshots das falhas. É também de valor ler e participar nos comentários a este post que estão a dar uma boa análise do Web Development nacional.</p>
<p><strong>EDIT 2</strong></p>
<p>Governo desmente ataque informático: <a title="Portal Novas Oportunidades não foi alvo de ataque informático" href="http://www.governo.gov.pt/pt/GC18/Governo/Ministerios/MTSS/Notas/Pages/20100308_MTSS_Com_Novas_Oportunidades.aspx" target="_blank">Portal Novas Oportunidades não foi alvo de ataque informático </a>. Provavelmente precisam que venha algo abaixo e que cause danos a muitas pessoas para admitirem os erros&#8230;</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;n=Vulnerabilidades+Site+Novas+Oportunidades&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;t=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Vulnerabilidades+Site+Novas+Oportunidades&amp;link=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades&amp;srcUrl=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;srcTitle=Vulnerabilidades+Site+Novas+Oportunidades&amp;snippet=J%C3%A1%20h%C3%A1%20algum%20tempo%20que%20tenho%20andado%20a%20investigar%20sites%20nacionais%20em%20busca%20de%20falhas%20de%20seguran%C3%A7a%20e%20quase%20todos%20as%20t%C3%AAm%2C%20as%20mais%20frequentes%20s%C3%A3o%20as%20falhas%20XSS%20mas%20tamb%C3%A9m%20%C3%A9%20muito%20comum%20encontrar%20falhas%20de%20SQL%20Injection.%0D%0A%0D%0AHoje%20tive%20acesso%20atrav%C3%A9s%20de%20um%20tweet%20do%20P%C3%BAblico%20%28http%3A%2F%2Fbit.ly%2FaU0kuy%29%20%C3%A0" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades&amp;summary=J%C3%A1%20h%C3%A1%20algum%20tempo%20que%20tenho%20andado%20a%20investigar%20sites%20nacionais%20em%20busca%20de%20falhas%20de%20seguran%C3%A7a%20e%20quase%20todos%20as%20t%C3%AAm%2C%20as%20mais%20frequentes%20s%C3%A3o%20as%20falhas%20XSS%20mas%20tamb%C3%A9m%20%C3%A9%20muito%20comum%20encontrar%20falhas%20de%20SQL%20Injection.%0D%0A%0D%0AHoje%20tive%20acesso%20atrav%C3%A9s%20de%20um%20tweet%20do%20P%C3%BAblico%20%28http%3A%2F%2Fbit.ly%2FaU0kuy%29%20%C3%A0&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Vulnerabilidades%20Site%20Novas%20Oportunidades%22&amp;body=Link: http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A J%C3%A1%20h%C3%A1%20algum%20tempo%20que%20tenho%20andado%20a%20investigar%20sites%20nacionais%20em%20busca%20de%20falhas%20de%20seguran%C3%A7a%20e%20quase%20todos%20as%20t%C3%AAm%2C%20as%20mais%20frequentes%20s%C3%A3o%20as%20falhas%20XSS%20mas%20tamb%C3%A9m%20%C3%A9%20muito%20comum%20encontrar%20falhas%20de%20SQL%20Injection.%0D%0A%0D%0AHoje%20tive%20acesso%20atrav%C3%A9s%20de%20um%20tweet%20do%20P%C3%BAblico%20%28http%3A%2F%2Fbit.ly%2FaU0kuy%29%20%C3%A0" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=Vulnerabilidades+Site+Novas+Oportunidades&amp;url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;h=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=Vulnerabilidades+Site+Novas+Oportunidades&amp;du=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;cn=J%C3%A1%20h%C3%A1%20algum%20tempo%20que%20tenho%20andado%20a%20investigar%20sites%20nacionais%20em%20busca%20de%20falhas%20de%20seguran%C3%A7a%20e%20quase%20todos%20as%20t%C3%AAm%2C%20as%20mais%20frequentes%20s%C3%A3o%20as%20falhas%20XSS%20mas%20tamb%C3%A9m%20%C3%A9%20muito%20comum%20encontrar%20falhas%20de%20SQL%20Injection.%0D%0A%0D%0AHoje%20tive%20acesso%20atrav%C3%A9s%20de%20um%20tweet%20do%20P%C3%BAblico%20%28http%3A%2F%2Fbit.ly%2FaU0kuy%29%20%C3%A0" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;title=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/+&quot;Vulnerabilidades+Site+Novas+Oportunidades&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F03%2F08%2Fvulnerabilidades-site-novas-oportunidades%2F&amp;t=Vulnerabilidades+Site+Novas+Oportunidades" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Vulnerabilidades+Site+Novas+Oportunidades+-+http://bit.ly/czpIh1&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/&amp;submitHeadline=Vulnerabilidades+Site+Novas+Oportunidades&amp;submitSummary=J%C3%A1%20h%C3%A1%20algum%20tempo%20que%20tenho%20andado%20a%20investigar%20sites%20nacionais%20em%20busca%20de%20falhas%20de%20seguran%C3%A7a%20e%20quase%20todos%20as%20t%C3%AAm%2C%20as%20mais%20frequentes%20s%C3%A3o%20as%20falhas%20XSS%20mas%20tamb%C3%A9m%20%C3%A9%20muito%20comum%20encontrar%20falhas%20de%20SQL%20Injection.%0D%0A%0D%0AHoje%20tive%20acesso%20atrav%C3%A9s%20de%20um%20tweet%20do%20P%C3%BAblico%20%28http%3A%2F%2Fbit.ly%2FaU0kuy%29%20%C3%A0&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=Vulnerabilidades+Site+Novas+Oportunidades&amp;body=Link: http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A J%C3%A1%20h%C3%A1%20algum%20tempo%20que%20tenho%20andado%20a%20investigar%20sites%20nacionais%20em%20busca%20de%20falhas%20de%20seguran%C3%A7a%20e%20quase%20todos%20as%20t%C3%AAm%2C%20as%20mais%20frequentes%20s%C3%A3o%20as%20falhas%20XSS%20mas%20tamb%C3%A9m%20%C3%A9%20muito%20comum%20encontrar%20falhas%20de%20SQL%20Injection.%0D%0A%0D%0AHoje%20tive%20acesso%20atrav%C3%A9s%20de%20um%20tweet%20do%20P%C3%BAblico%20%28http%3A%2F%2Fbit.ly%2FaU0kuy%29%20%C3%A0" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2010/03/08/vulnerabilidades-site-novas-oportunidades/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>PHP Twitter Bot :: Crawling Emails</title>
		<link>http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/</link>
		<comments>http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 18:13:23 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projectos]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[crawling]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=493</guid>
		<description><![CDATA[Um dos projectos que estou a começar a desenvolver é um Twitter Bot que seja capaz de simular o comportamento de um utilizador durante um curto período de tempo, dependendo da configuração que o utilizador lhe quiser dar. Deve também ter todas as funcionalidades que possam ser úteis ou pensáveis para um programa deste género [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F09%2F22%2Fphp-twitter-bot-crawling-emails%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F09%2F22%2Fphp-twitter-bot-crawling-emails%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Um dos projectos que estou a começar a desenvolver é um Twitter Bot que seja capaz de simular o comportamento de um utilizador durante um curto período de tempo, dependendo da configuração que o utilizador lhe quiser dar. Deve também ter todas as funcionalidades que possam ser úteis ou pensáveis para um programa deste género e por isso muito é necessário pesquisar e estudar.</p>
<p>Hoje surgiu-me a ideia de utilizar a pesquisa do Twitter para encontrar e-mails. Claro que não fui o primeiro a pensar nisto, então em vez de reinventar a roda fui alterá-la apenas para andar melhor.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">ob_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> writemail<span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$emails</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$emails</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$email</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$email</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'
'</span><span style="color: #339933;">;</span>
			<span style="color: #990000;">ob_flush</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #000088;">$id</span><span style="color: #339933;">&lt;</span> <span style="color: #339933;">=</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span> <span style="color: #000088;">$id</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> proxify_my_connection<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://search.twitter.com/search?page=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$id</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;q=gmail.com+OR+msn.com+OR+hotmail.com+OR+<span style="color: #009933; font-weight: bold;">%22e</span>mail+me%22&amp;rpp=100&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">&quot;([a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b)siU&quot;</span><span style="color: #339933;">,</span>
		<span style="color: #000088;">$file</span><span style="color: #339933;">,</span>
		<span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	writemail<span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">ob_end_flush</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>O que este código faz, basicamente, é ler a página de pesquisa do Twitter e utilizando <a title="Regular Expression - Wikipedia" href="http://en.wikipedia.org/wiki/Regular_expression" target="_blank">Regular Expressions</a> encontrar os e-mails existentes na página, e depois continua pelas páginas seguintes.</p>
<p>/search?page=&#8221;.$id.&#8221;&amp;q=gmail.com+OR+msn.com+OR+hotmail.com+OR+%22email+me%22&amp;rpp=100</p>
<p><strong>page</strong> numero da página<br />
<strong>q</strong> representa a query, a chave a pesquisar<br />
<strong>rpp</strong> results per page sendo que o máximo permitido pelo twitter é 100</p>
<p>Como podem reparar no meu código existe uma função que não está presente nem faz parte do PHP, a proxify_my_connection, é uma ferramenta que eu próprio desenvolvi há algum tempo e que não a quero tornar pública. Mas é fácil de a substituir, mesmo utilizando funções que já vêm de raíz no PHP. Podem também ver <a title="Scraping websites with PHP cURL under proxy" href="http://www.fromzerotoseo.com/scraping-websites-php-curl-proxy/" target="_blank">aqui</a> uma função com efeito semelhante à que eu desenvolvi, no entanto não tem nada a ver uma com a outra.</p>
<p>Em vez da função writemail() é mais produtivo ter uma base de dados onde quardar os e-mails e verificar se estes são repetidos ou não&#8230;</p>
<p>Podem dar uso à vossa imaginação, aumentar e desenvolver a query, aumentar a performance do script, etc. isto foi só um pequeno exemplo do que se pode fazer com a search do twitter.</p>
<h3>Bibliografia</h3>
<p style="text-align: left;">Regex utilizado no meu código: <a title="Twitter email grabber" href="http://www.fromzerotoseo.com/twitter-email-grabber/" target="_blank">http://www.fromzerotoseo.com/twitter-email-grabber/</a></p>
<h2 style="text-align: center;">Contribua para este blog deixando</h2>
<h2 style="text-align: center;">a sua opinião e um pouco do seu conhecimento</h2>
</pre>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;n=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;t=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;link=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;srcUrl=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;srcTitle=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;snippet=Um%20dos%20projectos%20que%20estou%20a%20come%C3%A7ar%20a%20desenvolver%20%C3%A9%20um%20Twitter%20Bot%20que%20seja%20capaz%20de%20simular%20o%20comportamento%20de%20um%20utilizador%20durante%20um%20curto%20per%C3%ADodo%20de%20tempo%2C%20dependendo%20da%20configura%C3%A7%C3%A3o%20que%20o%20utilizador%20lhe%20quiser%20dar.%20Deve%20tamb%C3%A9m%20ter%20todas%20as%20funcionalidades%20que%20possam%20ser%20%C3%BAteis%20ou%20pens%C3%A1" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;summary=Um%20dos%20projectos%20que%20estou%20a%20come%C3%A7ar%20a%20desenvolver%20%C3%A9%20um%20Twitter%20Bot%20que%20seja%20capaz%20de%20simular%20o%20comportamento%20de%20um%20utilizador%20durante%20um%20curto%20per%C3%ADodo%20de%20tempo%2C%20dependendo%20da%20configura%C3%A7%C3%A3o%20que%20o%20utilizador%20lhe%20quiser%20dar.%20Deve%20tamb%C3%A9m%20ter%20todas%20as%20funcionalidades%20que%20possam%20ser%20%C3%BAteis%20ou%20pens%C3%A1&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22PHP%20Twitter%20Bot%20%3A%3A%20Crawling%20Emails%22&amp;body=Link: http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Um%20dos%20projectos%20que%20estou%20a%20come%C3%A7ar%20a%20desenvolver%20%C3%A9%20um%20Twitter%20Bot%20que%20seja%20capaz%20de%20simular%20o%20comportamento%20de%20um%20utilizador%20durante%20um%20curto%20per%C3%ADodo%20de%20tempo%2C%20dependendo%20da%20configura%C3%A7%C3%A3o%20que%20o%20utilizador%20lhe%20quiser%20dar.%20Deve%20tamb%C3%A9m%20ter%20todas%20as%20funcionalidades%20que%20possam%20ser%20%C3%BAteis%20ou%20pens%C3%A1" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;h=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;du=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;cn=Um%20dos%20projectos%20que%20estou%20a%20come%C3%A7ar%20a%20desenvolver%20%C3%A9%20um%20Twitter%20Bot%20que%20seja%20capaz%20de%20simular%20o%20comportamento%20de%20um%20utilizador%20durante%20um%20curto%20per%C3%ADodo%20de%20tempo%2C%20dependendo%20da%20configura%C3%A7%C3%A3o%20que%20o%20utilizador%20lhe%20quiser%20dar.%20Deve%20tamb%C3%A9m%20ter%20todas%20as%20funcionalidades%20que%20possam%20ser%20%C3%BAteis%20ou%20pens%C3%A1" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;title=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/+&quot;PHP+Twitter+Bot+%3A%3A+Crawling+Emails&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F09%2F22%2Fphp-twitter-bot-crawling-emails%2F&amp;t=PHP+Twitter+Bot+%3A%3A+Crawling+Emails" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=PHP+Twitter+Bot+%3A%3A+Crawling+Emails+-+http://bit.ly/abeHG5&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/&amp;submitHeadline=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;submitSummary=Um%20dos%20projectos%20que%20estou%20a%20come%C3%A7ar%20a%20desenvolver%20%C3%A9%20um%20Twitter%20Bot%20que%20seja%20capaz%20de%20simular%20o%20comportamento%20de%20um%20utilizador%20durante%20um%20curto%20per%C3%ADodo%20de%20tempo%2C%20dependendo%20da%20configura%C3%A7%C3%A3o%20que%20o%20utilizador%20lhe%20quiser%20dar.%20Deve%20tamb%C3%A9m%20ter%20todas%20as%20funcionalidades%20que%20possam%20ser%20%C3%BAteis%20ou%20pens%C3%A1&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=PHP+Twitter+Bot+%3A%3A+Crawling+Emails&amp;body=Link: http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Um%20dos%20projectos%20que%20estou%20a%20come%C3%A7ar%20a%20desenvolver%20%C3%A9%20um%20Twitter%20Bot%20que%20seja%20capaz%20de%20simular%20o%20comportamento%20de%20um%20utilizador%20durante%20um%20curto%20per%C3%ADodo%20de%20tempo%2C%20dependendo%20da%20configura%C3%A7%C3%A3o%20que%20o%20utilizador%20lhe%20quiser%20dar.%20Deve%20tamb%C3%A9m%20ter%20todas%20as%20funcionalidades%20que%20possam%20ser%20%C3%BAteis%20ou%20pens%C3%A1" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/09/22/php-twitter-bot-crawling-emails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>O WebDeveloper que Utiliza PHP :: Caminho</title>
		<link>http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/</link>
		<comments>http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 15:38:50 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Optimização]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[code igniter]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[kohana]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=456</guid>
		<description><![CDATA[PHP é a linguagem de programação web server-side mais utilizada a nível Mundial e neste artigo vão ser retratados os aspectos que devem fazer parte do estudo, do caminho de um WebDeveloper que quer desenvolver em PHP. Entre eles Boas práticas, Frameworks, Segurança, Caching, Buffering e Environments. O Melhor Amigo &#8211; PHP Manual Antes de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F08%2F15%2Fphp-developer-caminho%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F08%2F15%2Fphp-developer-caminho%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://pt.php.net/" target="_blank"><img class="alignright" title="PHP" src="http://pt.php.net/images/php.gif" alt="" width="120" height="67" /></a>PHP é a linguagem de programação web server-side mais utilizada a nível Mundial e neste artigo vão ser retratados os aspectos que devem fazer parte do estudo, do caminho de um WebDeveloper que quer desenvolver em PHP. Entre eles Boas práticas, Frameworks, Segurança, Caching, Buffering e Environments.</p>
<h2>O Melhor Amigo &#8211; PHP Manual</h2>
<p>Antes de mais é necessário aprender a linguagem em si, e o PHP é uma linguagem com uma enorme comunidade por trás que desenvolveu o PHP Manual, neste manual encontra-se todo o conhecimento necessário para se dominar a linguagem PHP. E como se não chegasse a sua enorme qualidade este é, também, gratuito e pode ser acedido quer online quer offline.</p>
<p>De leitura fácil encontramos no PHP Manual a documentação de como proceder à sua instalação e configuração, a documentação da estrutura lógica da linguagem bem como de todas as funções que a compõe sem nunca faltarem imensos exemplos! A secção das notas dos utilizadores é riquissima em estudos e desenvolvimentos de cada função, não dispensem a sua leitura!</p>
<p><a title="PHP Manual" href="http://www.php.net/manual/pt_BR/index.php" target="_blank">Aceder ao PHP Manual em Português</a></p>
<h2>Montar um Ambiente de Teste</h2>
<p>Para testar o PHP não é necessário apenas ter um editor de texto e um browser, é necessário um servidor que corra o interpretador de PHP.</p>
<p>Então para começarmos a desenvolver em PHP é necessário configurar um pequeno servidor ou então utilizar um host existente&#8230;</p>
<p>Existem soluções que não envolvem muito trabalho nas configurações, como o <a title="MAMP" href="http://www.mamp.info/en/index.html" target="_blank">MAMP</a> (Mac), <a title="WAMP" href="http://www.wampserver.com/en/" target="_blank">WAMP</a> (Windows), <a title="LAMP" href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank">LAMP</a> (Linux), estas ferramentas já trazem também incluido a SGBD (Sistema de Gestão de Base de Dados) <a title="MySQL :: The world's most popular open source database" href="http://www.mysql.com/" target="_blank">MySQL</a>.</p>
<p>Depois para desenvolver o código pode utilizar ferramentas de auxilio, os IDE&#8217;s. A SmashingMagazine realizou um estudo comparativo sobre IDE&#8217;s para PHP. <a title="The Big PHP IDE Test" href="http://www.smashingmagazine.com/2009/02/11/the-big-php-ides-test-why-use-oneand-which-to-choose/" target="_blank">Ver Estudo Comparativo de IDE&#8217;s para PHP Aqui</a></p>
<p>Para quem não quer editores tão pesados aconselho o <a title="Geany" href="http://www.geany.org/" target="_blank">Geany</a> (Linux) ou <a title="Notepad++" href="http://notepad-plus.sourceforge.net/br/site.htm" target="_blank">Notepad++</a> (Windows).</p>
<h2>Desenvolver Bom Código</h2>
<p>Isto não é algo restrito ao PHP mas a todas as linguagens de programação.</p>
<p>Quando programamos algo deve ter, além de uma estrutura lógica e funcional correcta, uma boa identação, documentação e deve também ser auto-explicativa (variáveis, classes e funções com nomes que descrevam facilmente o que contêm / o que fazem).</p>
<p>Deve ser fácil de ler e entender quer pelo próprio programador daqui a uns anos ou por outro programador que tenha de modificar algo no código desenvolvido.</p>
<h3>Manter Funções Fora de Ciclos</h3>
<p>Manter sempre a declaração de funções fora de ciclos é um aspecto muito importante quando visamos a performance de uma aplicação desenvolvida em PHP pois num ciclo que se repete (imaginemos) 500 vezes, a função será declarada 500 vezes, uma perda de tempo.</p>
<h3>Organização do Código por Ficheiros</h3>
<p>Além da organização ao nível das linhas código em si temos a organização de código relativa à separação por ficheiros e categorias. Para facilitar o entendimento e a detecção e correcção de erros o código deve ser separado lógicamente.</p>
<p>Imaginemos que estamos a desenvolver um CMS (Content Management System). E então devido à grande quantidade de código que tem de ser desenvolvido vamos separar o código em vários ficheiros.</p>
<p>Má Prática</p>
<p><img class="aligncenter size-full wp-image-462" title="Má Prática - Organização Ficheiros" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/08/CapturaEcra.png" alt="Má Prática - Organização Ficheiros" width="633" height="97" /></p>
<p>Boa Prática</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-463" title="Boa Prática - Organização Código" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/08/CapturaEcra-1.png" alt="Boa Prática Organização Código" width="766" height="87" /></p>
<h2>Aprender Object Oriented Programming</h2>
<p>Object-oriented programming (OOP) ou Programação Orientada a Objectos (POO) em Português utiliza objectos para representar partes da aplicação permitindo separar em secções lógicas o código, facilitando a sua modificação e organização.</p>
<h2>Aprender a Utilizar uma Framework</h2>
<p>Muitos defendem que se deve aprender a utilizar frameworks na iniciação ao PHP porque com elas se aprende a desenvolver código mais avançado, a organizar melhor o código, a torná-lo lógico, a fazer debbug de erros, etc.</p>
<p>Outros defendem que não se deve aprender a utilizar frameworks na iniciação ao PHP porque no inicio o que os utilizadores necessitam é fazer os seus erros, aprender a desenvolver o seu código de raíz, sem funções e classes prontas a utilizar (exceptuando aquelas que vêm de raíz no PHP claro).</p>
<p>Eu considero que o utilizador deve dar uma olhadela a algumas frameworks e decidir se as deve ou não utilizar, porque cada pessoa é unica e pode aprender de diversas formas. Frameworks que considero muito bem estruturadas: <a title="Kohana: Swift, Secure, and Small PHP 5 Framework" href="http://www.kohanaphp.com/" target="_blank">Kohana</a>, <a title="CodeIgniter - Open source PHP web application framework" href="http://codeigniter.com/" target="_blank">CodeIgniter</a> e <a title="CakePHP: the rapid development php framework" href="http://cakephp.org/" target="_blank">CakePHP</a> .</p>
<h2>Nunca Confie nos Utilizadores</h2>
<p>Um dos aspectos mais importantes ao nível da segurança de aplicações informáticas é nunca confiar nos utilizadores da aplicação que estamos a desenvolver.</p>
<p>E que implica isso? Validar tudo o que entra! URL&#8217;s, formulários, cookies, sessões e até headers dos browsers.</p>
<p>Vamos então ver alguns exemplos de validações pois seria impossível cobrir todas as validações possíveis.</p>
<h2>Validar Dados</h2>
<p>É muito importante validar e corrigir todos os dados que possam ser introduzidos pelo utilizador! Infelizmente tenho visto imensas aplicações web sem qualquer protecção contra ataques tornando-as completamente vulneráveis a ataques.</p>
<p>Imaginemos o seguinte URL: joaopedropereira.com/xpto.php?id=1245</p>
<p>Que falha pode ser explorada aqui? O parâmetro dado ao id que pode ser utilizado para um SQL Injection por exemplo. Como fazer esta validação? Através de Regex:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'/^[0-9]+$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* código */</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Outro exemplo também com URL: joaopedropereira.com/xpto.php?email=email@domain.tld</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">TRUE</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* código */</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Também com formulários se deve proceder de uma forma semelhante a esta.</p>
<p>ID Cliente<br />
<input name="id" type="text" />
<p>Email<br />
<input name="email" type="text" /></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'/^[0-9]+$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">TRUE</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> AND is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* código */</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Vimos então que se podem validar os dados através de Regex mas existem outras formas de o fazer.</p>
<p>Imaginemos que temos um formulário que envia um campo de texto. Não podemos criar uma função em Regex para o efeito, assim temos de utilizar outras funções mais ou menos complexas para fazer a limpeza destes dados (recomendo o estudo das funções de validação da Kohana ou CodeIgniter).</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$str</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Com esta função adicionamos alguma segurança ao nosso código limpando tags como as utilizadas em ataques XSS e limpamos os dados contra SQL Injection. (Atenção: esta função não inibe todos os ataques apenas os dificulta um pouco).</p>
<p>Existe também uma forma de melhorar a segurança que dá menos trabalho pois apenas com algumas linhas de código podemos limpar todos os dados passados por $_POST, $_GET, $_REQUEST, $_COOKIE, $_SESSION, etc.</p>
<p>Eu normalmente crio um ficheiro que incluo no inicio de cada página parecido com o seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_REQUEST</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_COOKIE</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>Ambiente de Teste vs. Ambiente Real</h2>
<p>Um dos problemas com que me deparava quando me iniciei no desenvolvimento de aplicações web em PHP (como o tempo passa&#8230;) era a mudança de variáveis entre o ambiente de teste e o real, como por exemplo as configurações da base de dados&#8230;</p>
<p>Até ter adoptado uma metodologia que me permitia ao alterar apenas uma linha alternar entre os ambientes.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'LIVE'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>LIVE<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_HOST'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_USER'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_PASSWORD'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_DATABASE'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'basededadosxpto'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_ALL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_HOST'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'joaopedropereira.com'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_USER'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'joao'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_PASSWORD'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'pedro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_DATABASE'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'joao_basededados'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Com esta metodologia só preciso de modificar a linha que define a constante LIVE como true ou false conforme esteja a trabalhar num ou noutro ambiente, podem também verificar ali a alteração do <a title="error_reporting" href="http://www.php.net/manual/pt_BR/function.error-reporting.php" target="_blank">error_reporting</a>, enquanto no caso do Ambiente Real não quero que sejam mostrados nenhuns erros aos visitantes por questões quer de segurança quer de aspecto, no caso do Ambiente de Teste quero saber todos os pormenores.</p>
<h2>Utilizar Output Buffering</h2>
<p>Utilizar Output Buffering é uma excelente maneira de optimizar a performance de uma aplicação em PHP. Sem Output Buffering a sua aplicação só vai mostrar o HTML no fim de toda a página estar carregada, com o Output Buffering a sua aplicação mostra o HTML já carregado quando o programador ordena!</p>
<p>O Developer Brian Cray criou um artigo muito interessante sobre este assunto para a DevTips. <a title="Output Buffering for Web Developers, a Beginner’s Guide" href="http://dev-tips.com/featured/output-buffering-for-web-developers-a-beginners-guide" target="_blank">Veja-o aqui</a>.</p>
<h2>Utilizar Sistemas de Caching</h2>
<p>Os Sistemas de Caching são interessantes para aumentar a performance de uma aplicação em PHP. No entanto há que ter em atenção alguns aspectos como por exemplo numa amostragem de resultados em tempo real não se podem utilizar sistemas de caching ou então teremos dados desactualizados&#8230;</p>
<p>Existem sistemas prontos a usar mas também podemos desenvolver o nosso sistema de caching como por exemplo algo do género:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$cache_file</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'cache_files/'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'SCRIPT_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cache_time</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1200</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//60min*6 * 60 segundos (6HORAS)</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span> AND <span style="color: #990000;">is_readable</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span> AND <span style="color: #009900;">&#40;</span><span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$cachetime</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">filemtime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">ob_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* o código do ficheiro */</span>
&nbsp;
<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachefile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'w'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #990000;">ob_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">ob_end_flush</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Sistemas de Caching:</p>
<ul>
<li><a title="Memcached" href="http://www.danga.com/memcached/" target="_blank">Memcached</a></li>
<li><a title="APC" href="http://us.php.net/manual/pt_BR/intro.apc.php" target="_blank">APC</a></li>
<li><a title="XCache" href="http://xcache.lighttpd.net/" target="_blank">XCache</a></li>
</ul>
<h2>Eu não mordo&#8230;</h2>
<p>Não tenha medo de comentar, não tenha medo de perguntar, de criticar ou elogiar! Qualquer dúvida pergunte, qualquer reparo faça-o, todas as opiniões e comentários são bem vindos aqui no blog.</p>
<p>Pode também divulgar o artigo, eu não acuso ninguém que divulgue o meu artigo nas diversas redes sociais ou nos próprios blogs (mencionando a fonte ou autor) de plágio <img src='http://joaopedropereira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<ul></ul>
</pre>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;n=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;t=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;link=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;srcUrl=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;srcTitle=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;snippet=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;summary=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22O%20WebDeveloper%20que%20Utiliza%20PHP%20%3A%3A%20Caminho%22&amp;body=Link: http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;h=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;du=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;cn=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/+&quot;O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F08%2F15%2Fphp-developer-caminho%2F&amp;t=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho+-+http://bit.ly/bl1BEG&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;submitHeadline=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;submitSummary=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;body=Link: http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Validar Dados em ASP</title>
		<link>http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/</link>
		<comments>http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 22:24:32 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=412</guid>
		<description><![CDATA[O que vos venho mostrar hoje é como dificultar o trabalho a pessoas que queiram explorar vulnerabilidades no vosso sistema programado em ASP. Esta semana tive um trabalho em mãos que consistia em resolver um problema num site Inglês programado em ASP pois este andava a ser atacado por hackers através de SQL Injection e [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F27%2Fvalidar-dados-asp%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F27%2Fvalidar-dados-asp%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>O que vos venho mostrar hoje é como dificultar o trabalho a pessoas que queiram explorar vulnerabilidades no vosso sistema programado em ASP.  Esta semana tive um trabalho em mãos que consistia em resolver um problema num site Inglês programado em ASP pois este andava a ser atacado por hackers através de SQL Injection e através desta técnica também criavam ataques de XSS.  Não precisei de muito tempo até identificar um possível buraco que pudesse ser explorado.  Depois de alguns testes lá consegui obter informações sobre a base de dados desse site mas também sobre outras bases de dados existentes no mesmo servidor o que mostra não só a falta de cuidado do programador mas também do alojamento, mas como o segundo caso não me dizia respeito tratei de corrigir o primeiro.</p>
<h2>Como Validar Dados Em ASP</h2>
<p>Existem várias maneiras de validar dados quando estamos a desenvolver aplicações em ASP.</p>
<h3>Função: IsNumeric()</h3>
<p>A maior parte dos dados passados através de parâmetros nos URL são valores numéricos correspondentes a ID&#8217;s, assim a função que a linguagem ASP traz por defeito (built-in) IsNumeric() chega para verificar se os valores dos parâmetros passados correspondem a um número.  Foi isto que utilizei para o caso em especifico.  O programador tinha feito algo como:</p>

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;">GetNews <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;SELECT NewsID, campox, campoy, Imagem1, Imagem2, Artigo FROM empresa_News WHERE NewsID = '&quot;</span><span style="color: #006600; font-weight: bold;">&amp;</span>amp<span style="color: #006600; font-weight: bold;">;</span>request<span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #cc0000;">&quot;id&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight: bold;">&amp;</span>amp<span style="color: #006600; font-weight: bold;">;</span><span style="color: #cc0000;">&quot;' &quot;</span>
<span style="color: #990099; font-weight: bold;">Set</span> RSNews <span style="color: #006600; font-weight: bold;">=</span> MyConn.<span style="color: #330066;">execute</span><span style="color: #006600; font-weight:bold;">&#40;</span>GetNews<span style="color: #006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>E isto passava o valor do id sem qualquer tipo de validação.  Passando agora a algo como</p>

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">if</span> IsNumeric<span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #990099; font-weight: bold;">request</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #cc0000;">&quot;id&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #006600; font-weight: bold;">===</span> <span style="color: #0000ff; font-weight: bold;">TRUE</span> <span style="color: #990099; font-weight: bold;">then</span>
GetNews <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;SELECT NewsID, campox, campoy, Imagem1, Imagem2, Artigo FROM empresa_News WHERE NewsID = '&quot;</span><span style="color: #006600; font-weight: bold;">&amp;</span>amp<span style="color: #006600; font-weight: bold;">;</span>request<span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #cc0000;">&quot;id&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight: bold;">&amp;</span>amp<span style="color: #006600; font-weight: bold;">;</span><span style="color: #cc0000;">&quot;' &quot;</span>
<span style="color: #990099; font-weight: bold;">Set</span> RSNews <span style="color: #006600; font-weight: bold;">=</span> MyConn.<span style="color: #330066;">execute</span><span style="color: #006600; font-weight:bold;">&#40;</span>GetNews<span style="color: #006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Mas podiam ter sido utilizadas outras técnicas caso não se tratasse de um valor numérico.</p>
<h3>Escape dos Dados</h3>

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;"><span style="color: #0000ff; font-weight: bold;">function</span> stripQuotes<span style="color: #006600; font-weight:bold;">&#40;</span>str<span style="color: #006600; font-weight:bold;">&#41;</span>
stripQuotes <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #330066;">replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>str, <span style="color: #cc0000;">&quot;'&quot;</span>, <span style="color: #cc0000;">&quot;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
<span style="color: #990099; font-weight: bold;">end</span> <span style="color: #0000ff; font-weight: bold;">function</span></pre></div></div>

<p>Esta função vai fazer com que todos os caracteres &#8216; desapareçam, pode-se adaptar esta função para outros caracteres, o que é algo que aconselho vivamente a fazerem, bem como a palavras como script, xp_, select, drop, update, where, entre outras.</p>
<h2>Desafio</h2>
<p>Desafio todos os leitores a criarem uma função em ASP para fazer uma validação e tratamento dos dados protegendo as páginas de SQL Injection e de ataques XSS. Para isso só precisam de deixar a vossa função nos comentários.</p>
<p>A melhor função será publicada num post com uma menção para o seu autor.</p>
<p><strong><span style="text-decoration: underline;">Show some love, divulguem e participem <img src='http://joaopedropereira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></strong></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;n=Validar+Dados+em+ASP&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;t=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Validar+Dados+em+ASP&amp;link=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP&amp;srcUrl=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;srcTitle=Validar+Dados+em+ASP&amp;snippet=O%20que%20vos%20venho%20mostrar%20hoje%20%C3%A9%20como%20dificultar%20o%20trabalho%20a%20pessoas%20que%20queiram%20explorar%20vulnerabilidades%20no%20vosso%20sistema%20programado%20em%20ASP.%20%20Esta%20semana%20tive%20um%20trabalho%20em%20m%C3%A3os%20que%20consistia%20em%20resolver%20um%20problema%20num%20site%20Ingl%C3%AAs%20programado%20em%20ASP%20pois%20este%20andava%20a%20ser%20atacado%20por%20hackers%20at" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP&amp;summary=O%20que%20vos%20venho%20mostrar%20hoje%20%C3%A9%20como%20dificultar%20o%20trabalho%20a%20pessoas%20que%20queiram%20explorar%20vulnerabilidades%20no%20vosso%20sistema%20programado%20em%20ASP.%20%20Esta%20semana%20tive%20um%20trabalho%20em%20m%C3%A3os%20que%20consistia%20em%20resolver%20um%20problema%20num%20site%20Ingl%C3%AAs%20programado%20em%20ASP%20pois%20este%20andava%20a%20ser%20atacado%20por%20hackers%20at&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Validar%20Dados%20em%20ASP%22&amp;body=Link: http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A O%20que%20vos%20venho%20mostrar%20hoje%20%C3%A9%20como%20dificultar%20o%20trabalho%20a%20pessoas%20que%20queiram%20explorar%20vulnerabilidades%20no%20vosso%20sistema%20programado%20em%20ASP.%20%20Esta%20semana%20tive%20um%20trabalho%20em%20m%C3%A3os%20que%20consistia%20em%20resolver%20um%20problema%20num%20site%20Ingl%C3%AAs%20programado%20em%20ASP%20pois%20este%20andava%20a%20ser%20atacado%20por%20hackers%20at" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=Validar+Dados+em+ASP&amp;url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;h=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=Validar+Dados+em+ASP&amp;du=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;cn=O%20que%20vos%20venho%20mostrar%20hoje%20%C3%A9%20como%20dificultar%20o%20trabalho%20a%20pessoas%20que%20queiram%20explorar%20vulnerabilidades%20no%20vosso%20sistema%20programado%20em%20ASP.%20%20Esta%20semana%20tive%20um%20trabalho%20em%20m%C3%A3os%20que%20consistia%20em%20resolver%20um%20problema%20num%20site%20Ingl%C3%AAs%20programado%20em%20ASP%20pois%20este%20andava%20a%20ser%20atacado%20por%20hackers%20at" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;title=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/+&quot;Validar+Dados+em+ASP&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F27%2Fvalidar-dados-asp%2F&amp;t=Validar+Dados+em+ASP" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Validar+Dados+em+ASP+-+http://bit.ly/aKKUJI&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/&amp;submitHeadline=Validar+Dados+em+ASP&amp;submitSummary=O%20que%20vos%20venho%20mostrar%20hoje%20%C3%A9%20como%20dificultar%20o%20trabalho%20a%20pessoas%20que%20queiram%20explorar%20vulnerabilidades%20no%20vosso%20sistema%20programado%20em%20ASP.%20%20Esta%20semana%20tive%20um%20trabalho%20em%20m%C3%A3os%20que%20consistia%20em%20resolver%20um%20problema%20num%20site%20Ingl%C3%AAs%20programado%20em%20ASP%20pois%20este%20andava%20a%20ser%20atacado%20por%20hackers%20at&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=Validar+Dados+em+ASP&amp;body=Link: http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A O%20que%20vos%20venho%20mostrar%20hoje%20%C3%A9%20como%20dificultar%20o%20trabalho%20a%20pessoas%20que%20queiram%20explorar%20vulnerabilidades%20no%20vosso%20sistema%20programado%20em%20ASP.%20%20Esta%20semana%20tive%20um%20trabalho%20em%20m%C3%A3os%20que%20consistia%20em%20resolver%20um%20problema%20num%20site%20Ingl%C3%AAs%20programado%20em%20ASP%20pois%20este%20andava%20a%20ser%20atacado%20por%20hackers%20at" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/07/27/validar-dados-asp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Vulnerabilidade XSS no jogo System Empires</title>
		<link>http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/</link>
		<comments>http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/#comments</comments>
		<pubDate>Fri, 01 May 2009 19:45:29 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Segurança]]></category>
		<category><![CDATA[sysemp]]></category>
		<category><![CDATA[system empires]]></category>
		<category><![CDATA[vuln]]></category>
		<category><![CDATA[vulnerabilidade]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=306</guid>
		<description><![CDATA[Hoje venho mostrar-vos como é fácil encontrar vulnerabilidades em páginas web, para inaugurar esta nova &#8220;categoria&#8221; do blog o website escolhido foi o jogo web-based System Empires jogo este que tenho vindo a jogar e a falha nele explorada será o tipo de falha Cross-site scripting (XSS) esta falha, para os que não sabem, permite [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F05%2F01%2Fvulnerabilidade-xss-system-empires%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F05%2F01%2Fvulnerabilidade-xss-system-empires%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Hoje venho mostrar-vos como é fácil encontrar vulnerabilidades em páginas web, para inaugurar esta nova &#8220;categoria&#8221; do blog o website escolhido foi o jogo web-based <a title="System Empires" href="http://civ.sysemp.com?470" target="_blank" class="broken_link">System Empires</a> jogo este que tenho vindo a jogar e a falha nele explorada será o tipo de falha Cross-site scripting (XSS) esta falha, para os que não sabem, permite fazer injecção de código numa página, esta é uma vulnerabilidade client-side pois só se dá no browser da vítima e não afecta, directamente, o servidor.</p>
<p><span style="text-decoration: underline;">Nota:</span> <span style="text-decoration: line-through;">esta falha é apenas vísivel a membros registados no jogo</span>. Vulnerabilidade corrigida (<a title="Detalhes da correcção da vulnerabilidade" href="http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/#comments" target="_blank">mais informações</a>)</p>
<p><span id="more-306"></span></p>
<p>Uma funcionalidade que o jogo tem é de verificar nas regiões visiveis ao nosso observatório se ele está online para poder executar o ataque com mais segurança.</p>
<p><a href="http://joaopedropereira.com/blog/wp-content/uploads/2009/05/se-civ_1241197364663.png"><img class="aligncenter size-medium wp-image-307" title="SystemEmpires_Online" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/05/se-civ_1241197364663-262x300.png" alt="SystemEmpires_Online" width="262" height="300" /></a></p>
<p>E como é o URL desta funcionalidade formado?</p>
<p style="text-align: center;">http://civ.sysemp.com/players.php?<strong>u</strong>=470&amp;<strong>n</strong>=skin&amp;pop</p>
<p style="text-align: left;"><strong>u</strong> &#8211; Unique_ID do membro</p>
<p><strong>n</strong> &#8211; texto a mostrar na janela
</p>
<p style="text-align: left;">Onde reside a falha neste URL?</p>
<p style="text-align: left;">No parâmetro n. Para não fazer mais uma query à base de dados os programadores optaram por passar o parâmetro anteriormente e esqueceram-se de fazer filtragem dos dados. Assim sem qualquer filtragem é possível passar qualquer tipo de dados incluindo elementos HTML.</p>
<p style="text-align: left;">Introduzindo então informações no lugar de skin, por exemplo:</p>
<p style="text-align: left;">http://civ.sysemp.com/players.php?u=470&amp;n=&lt;script&gt;alert(&#8220;XSS?&#8221;);&lt;/script&gt;&amp;pop</p>
<p style="text-align: left;">Vamos obter o seguinte resultado:</p>
<p style="text-align: left;"><a href="http://joaopedropereira.com/blog/wp-content/uploads/2009/05/capturaecra1.png"><img class="aligncenter size-medium wp-image-309" title="SystemEmpires_Script_Alert" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/05/capturaecra1-300x136.png" alt="SystemEmpires_Script_Alert" width="300" height="136" /></a></p>
<p style="text-align: left;">Agora se tentarmos colocar uma página para tentar enganar alguém que aceda através deste URL podemos utilizar iframes por exemplo:</p>
<p style="text-align: left;">http://civ.sysemp.com/players.php?u=470&amp;n=&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;iframe src =&#8221;http://joaopedropereira.com/&#8221; width=&#8221;110%&#8221; height=&#8221;3000px&#8221; scrolling=&#8221;no&#8221; frameborder=&#8221;0&#8243;&gt;&lt;/iframe&gt;&lt;/table&gt;&amp;pop</p>
<p style="text-align: left;"><a href="http://joaopedropereira.com/blog/wp-content/uploads/2009/05/se-civ_1241199328082.png"><img class="aligncenter size-medium wp-image-310" title="SystemEmpires_iframe" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/05/se-civ_1241199328082-123x300.png" alt="SystemEmpires_iframe" width="123" height="300" /></a></p>
<p style="text-align: left;">Neste caso a única coisa que acontece é a página do jogo ficar com a minha página pessoal a ocupar tudo, mas imaginemos que alguém queria fazer algo de mal, podia gerar uma página de login igual à do jogo e colocar num host privado guardando todas as passwords que os utilizadores introduzissem sem saberem que estavam fora do jogo&#8230; Claro que para isso era necessário alguma engenharia social e técnicas de phishing mas com isto era muitissimo fácil de realizar e era possível de realizar com poucos conhecimentos a esse nível.</p>
<p style="text-align: left;">A falha já foi reportada à administração, esperemos brevidade na resolução do problema.</p>
<p style="text-align: left;">Quem se quiser proteger contra este tipo de vulnerabilidades pode utilizar vários programas como o <a title="HTML Purifier WebSite" href="http://htmlpurifier.org/" target="_blank">HTML Purifier</a> (permite algumas tags HTML), ou então aconselho vivamente a utilização da <a title="Code Igniter: Input &amp; Security Class" href="http://codeigniter.com/user_guide/libraries/input.html" target="_blank">Input Class</a> da framework Code Igniter (quem não quiser utilizar a framework completa pode alterar o ficheiro e utilizar apenas o que lhe convém e até fazer modificações).</p>
<p style="text-align: left;">E vocês o que acham deste tipo de vulnerabilidades? E como as aproveitariam?</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;n=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;t=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;link=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;srcUrl=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;srcTitle=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;snippet=Hoje%20venho%20mostrar-vos%20como%20%C3%A9%20f%C3%A1cil%20encontrar%20vulnerabilidades%20em%20p%C3%A1ginas%20web%2C%20para%20inaugurar%20esta%20nova%20%22categoria%22%20do%20blog%20o%20website%20escolhido%20foi%20o%20jogo%20web-based%20System%20Empires%20jogo%20este%20que%20tenho%20vindo%20a%20jogar%20e%20a%20falha%20nele%20explorada%20ser%C3%A1%20o%20tipo%20de%20falha%20Cross-site%20scripting%20%28XSS%29%20esta%20falh" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;summary=Hoje%20venho%20mostrar-vos%20como%20%C3%A9%20f%C3%A1cil%20encontrar%20vulnerabilidades%20em%20p%C3%A1ginas%20web%2C%20para%20inaugurar%20esta%20nova%20%22categoria%22%20do%20blog%20o%20website%20escolhido%20foi%20o%20jogo%20web-based%20System%20Empires%20jogo%20este%20que%20tenho%20vindo%20a%20jogar%20e%20a%20falha%20nele%20explorada%20ser%C3%A1%20o%20tipo%20de%20falha%20Cross-site%20scripting%20%28XSS%29%20esta%20falh&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Vulnerabilidade%20XSS%20no%20jogo%20System%20Empires%22&amp;body=Link: http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Hoje%20venho%20mostrar-vos%20como%20%C3%A9%20f%C3%A1cil%20encontrar%20vulnerabilidades%20em%20p%C3%A1ginas%20web%2C%20para%20inaugurar%20esta%20nova%20%22categoria%22%20do%20blog%20o%20website%20escolhido%20foi%20o%20jogo%20web-based%20System%20Empires%20jogo%20este%20que%20tenho%20vindo%20a%20jogar%20e%20a%20falha%20nele%20explorada%20ser%C3%A1%20o%20tipo%20de%20falha%20Cross-site%20scripting%20%28XSS%29%20esta%20falh" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;h=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;du=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;cn=Hoje%20venho%20mostrar-vos%20como%20%C3%A9%20f%C3%A1cil%20encontrar%20vulnerabilidades%20em%20p%C3%A1ginas%20web%2C%20para%20inaugurar%20esta%20nova%20%22categoria%22%20do%20blog%20o%20website%20escolhido%20foi%20o%20jogo%20web-based%20System%20Empires%20jogo%20este%20que%20tenho%20vindo%20a%20jogar%20e%20a%20falha%20nele%20explorada%20ser%C3%A1%20o%20tipo%20de%20falha%20Cross-site%20scripting%20%28XSS%29%20esta%20falh" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;title=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/+&quot;Vulnerabilidade+XSS+no+jogo+System+Empires&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F05%2F01%2Fvulnerabilidade-xss-system-empires%2F&amp;t=Vulnerabilidade+XSS+no+jogo+System+Empires" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Vulnerabilidade+XSS+no+jogo+System+Empires+-+http://bit.ly/adymet&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/&amp;submitHeadline=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;submitSummary=Hoje%20venho%20mostrar-vos%20como%20%C3%A9%20f%C3%A1cil%20encontrar%20vulnerabilidades%20em%20p%C3%A1ginas%20web%2C%20para%20inaugurar%20esta%20nova%20%22categoria%22%20do%20blog%20o%20website%20escolhido%20foi%20o%20jogo%20web-based%20System%20Empires%20jogo%20este%20que%20tenho%20vindo%20a%20jogar%20e%20a%20falha%20nele%20explorada%20ser%C3%A1%20o%20tipo%20de%20falha%20Cross-site%20scripting%20%28XSS%29%20esta%20falh&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=Vulnerabilidade+XSS+no+jogo+System+Empires&amp;body=Link: http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Hoje%20venho%20mostrar-vos%20como%20%C3%A9%20f%C3%A1cil%20encontrar%20vulnerabilidades%20em%20p%C3%A1ginas%20web%2C%20para%20inaugurar%20esta%20nova%20%22categoria%22%20do%20blog%20o%20website%20escolhido%20foi%20o%20jogo%20web-based%20System%20Empires%20jogo%20este%20que%20tenho%20vindo%20a%20jogar%20e%20a%20falha%20nele%20explorada%20ser%C3%A1%20o%20tipo%20de%20falha%20Cross-site%20scripting%20%28XSS%29%20esta%20falh" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/05/01/vulnerabilidade-xss-system-empires/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
