<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Ronaldo Richieri &#187; Apache</title>
	<atom:link href="http://www.richieri.com/category/tecnologia/software-livre/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.richieri.com</link>
	<description>Colaboração, software livre, cultura popular, danças, forró e por aí vai!</description>
	<lastBuildDate>Tue, 03 Apr 2012 04:05:51 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<copyright>2006-2007 </copyright>
	<managingEditor>richieri@gmail.com (Ronaldo Richieri)</managingEditor>
	<webMaster>richieri@gmail.com (Ronaldo Richieri)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://www.richieri.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Ronaldo Richieri</title>
		<link>http://www.richieri.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Colaboração, software livre, cultura popular, danças, forró e por aí vai!</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Ronaldo Richieri</itunes:author>
	<itunes:owner>
		<itunes:name>Ronaldo Richieri</itunes:name>
		<itunes:email>richieri@gmail.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.richieri.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>(English) A small Web Hosting with OpenPanel + Ubuntu Server 10.04 LTS + some tricks</title>
		<link>http://www.richieri.com/2011/10/26/english-a-small-web-hosting-with-openpanel-ubuntu-server-10-04-lts-some-tricks/</link>
		<comments>http://www.richieri.com/2011/10/26/english-a-small-web-hosting-with-openpanel-ubuntu-server-10-04-lts-some-tricks/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 13:28:01 +0000</pubDate>
		<dc:creator>richieri</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Dicas de Desenvolvimento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[10.04 lts]]></category>
		<category><![CDATA[apache2-mpm-itk]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[openpanel]]></category>
		<category><![CDATA[ubuntu server]]></category>
		<category><![CDATA[virtual hosts]]></category>

		<guid isPermaLink="false">http://www.richieri.com/?p=1390</guid>
		<description><![CDATA[Desculpe-nos, mas este texto esta apenas disponível em English.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>



<p>Desculpe-nos, mas este texto esta apenas disponível em <a href="http://www.richieri.com/en/category/tecnologia/software-livre/apache/feed/">English</a>.</p>


<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>]]></content:encoded>
			<wfw:commentRss>http://www.richieri.com/2011/10/26/english-a-small-web-hosting-with-openpanel-ubuntu-server-10-04-lts-some-tricks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Removendo Virus (malware) do WordPress e protegendo seu blog</title>
		<link>http://www.richieri.com/2011/09/01/removendo-virus-malware-do-wordpress-e-protegendo-seu-blog/</link>
		<comments>http://www.richieri.com/2011/09/01/removendo-virus-malware-do-wordpress-e-protegendo-seu-blog/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 00:25:39 +0000</pubDate>
		<dc:creator>richieri</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Dicas de Desenvolvimento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[badware]]></category>
		<category><![CDATA[cleaning]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress-counter]]></category>

		<guid isPermaLink="false">http://www.richieri.com/?p=1350</guid>
		<description><![CDATA[Note: não me responsabilizo por danos causados em sua instalação. Utilize essas dicas por sua própria conta e risco Estes dias tive dois sites wordpress infectados por malwares! Penei um pouco pra limpar o site e resolvi compartilhar aqui as dicas que fui juntando pelo caminho. Basicamente, os virus se criam um &#8220;backdoor&#8221;  se aproveitando [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>



<p><em>Note: não me responsabilizo por danos causados em sua instalação. Utilize essas dicas por sua própria conta e risco <img src='http://www.richieri.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p>Estes dias tive dois sites wordpress infectados por malwares! Penei um pouco pra limpar o site e resolvi compartilhar aqui as dicas que fui juntando pelo caminho.</p>
<p>Basicamente, os virus se criam um &#8220;backdoor&#8221;  se aproveitando de alguma falha de segurança ou bug em sua instalação. Com esse backdoor criado, o virus tem acesso direto ao seu site mesmo após a correção do bug ou atualização do sistema. É como se o virus tivesse criado uma conta de ssh em seu servidor e pudesse executar praticamente qualquer comando lá dentro.</p>
<p>Em um dos casos, o bug que permitiu a instalação do virus estava em um tema que utilizava uma biblioteca chamada timthumb.php. Descobri <a href="http://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html" target="_blank">neste link</a> a falha que esse arquivo continha e segui os passos descritos lá para resolver o problema. Este virus se instalava através do timthumb.php e criava um backdoor. Através do backdoor, outros virus se instalaram no site. Corrigi o arquivo timthumb.php para remover a possibilidade de uma nova invasão.</p>
<p>Estes virus por sua vez, inseriam um iframe na home page do site, fazendo com que o visitante fosse redirecionado para um site com código malicioso. No meu caso, era um iframe para um site chamado wordpress-counter.com</p>
<p>Tive então que remover backdoor antes de remover o gerador de iframe, pois sempre que removia o iframe em si, o mesmo se instaurava novamente após 15 minutos através do backdoor.</p>
<p>Segui as dicas <a href="http://cantonbecker.com/work/musings/2009/how-to-search-for-backdoors-in-a-hacked-wordpress-site/" target="_blank">deste post</a> e descobri o backdoor no arquivo wp-config.php. Após o fim do código tradicional do WordPress haviam cerca de 100 linhas em branco e, em seguida, o código nocivo que permitia a executação de scripts php enviados por REQUESTs.</p>
<p>Depois, segui as dicas <a href="http://blog.unmaskparasites.com/2011/03/02/versatile-cc-attacks/" target="_blank">deste outro post</a>, para eliminar os geradores de iframe.</p>
<p>Finalmente, fiz um congelamento dos arquivos da minha instalação do WordPress. Para isso, acessei a raiz do site através do SSH e realizei os passos abaixo (note que isto impedirá você de atualizar automaticamente o WordPress para versões mais recentes pelo Dashboard):</p>
<p>Para proteger pastas:</p>
<pre>find . -type d -exec chmod 755 {} \;</pre>
<p>Para proteger arquivos:</p>
<pre>find . -type f -exec chmod 644 {} \;</pre>
<p>Para impedir que outros usuários enxerguem os dados de seu banco de dados, o que é possível em algumas hospedagens compartilhadas:</p>
<pre>chmod 750 wp-config.php</pre>
<p>Para impedir que novos ataques modifiquem qualquer arquivo no seu sistema (menos arquivos de plugins e temas):</p>
<pre>
chmod u-w * -R
chmod u+w wp-content -R</pre>
<p><strong>Referencias</strong></p>
<p><a href="http://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html" target="_blank">http://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html</a><br />
<a href="http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/" target="_blank">http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/</a><br />
<a href="http://cantonbecker.com/work/musings/2009/how-to-search-for-backdoors-in-a-hacked-wordpress-site/" target="_blank">http://cantonbecker.com/work/musings/2009/how-to-search-for-backdoors-in-a-hacked-wordpress-site/</a><br />
<a href="http://blog.unmaskparasites.com/2011/03/02/versatile-cc-attacks/" target="_blank">http://blog.unmaskparasites.com/2011/03/02/versatile-cc-attacks/</a><br />
<a href="http://codex.wordpress.org/Hardening_WordPress" target="_blank">http://codex.wordpress.org/Hardening_WordPress</a></p>


<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>]]></content:encoded>
			<wfw:commentRss>http://www.richieri.com/2011/09/01/removendo-virus-malware-do-wordpress-e-protegendo-seu-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passando informações numa URL utilizando RewriteRules ao invés de QueryStrings</title>
		<link>http://www.richieri.com/2011/08/09/passando-informacoes-numa-url-utilizando-rewriterules-ao-inves-de-querystrings/</link>
		<comments>http://www.richieri.com/2011/08/09/passando-informacoes-numa-url-utilizando-rewriterules-ao-inves-de-querystrings/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 05:53:34 +0000</pubDate>
		<dc:creator>richieri</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[querystring]]></category>
		<category><![CDATA[rewirterule]]></category>
		<category><![CDATA[rewrite rules]]></category>

		<guid isPermaLink="false">http://www.richieri.com/?p=1323</guid>
		<description><![CDATA[Um pequeno tutorial para quem faz sistemas que precisam de pretty Urls.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>



<p><em>Um pequeno tutorial para quem faz sistemas que precisam de pretty Urls</em></p>
<p>Exemplo tosco:</p>
<p>Você tem um formulário de pesquisa que permite ao usuário escolher uma categoria de um livro, o nome do autor e/ou a editora de uma obra.</p>
<p>A URL gerada para uma pesquisa deste form seria algo como:</p>
<p><a href="http://localhost/pesquisa.php?categoria=12&#038;autor=22&#038;editora=12" rel="nofollow">http://localhost/pesquisa.php?categoria=12&#038;autor=22&#038;editora=12</a></p>
<p>ou se escolhermos apenas o campo editora:</p>
<p><a href="http://localhost/pesquisa.php?editora=12" rel="nofollow">http://localhost/pesquisa.php?editora=12</a></p>
<p>Se quisermos transformar o resultado desta pesquisa, num link interpretável pelos mecanismos de busca precisamos utilizar o recurso RewriteRules do Apache.</p>
<p>A URL ficaria assim:</p>
<p><a href="http://localhost/pesquisa/categoria/12/autor/22/editora/12" rel="nofollow">http://localhost/pesquisa/categoria/12/autor/22/editora/12</a></p>
<p>O arquivo .htaccess precisaria das seguintes diretrizes:</p>
<pre>&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php
RewriteRule ^pesquisa pesquisa.php
RewriteRule ^(.+)categoria/([0-9]+)/? pesquisa.php/?categoria=$2 [QSA]
RewriteRule ^(.+)autor/([0-9]+)/? pesquisa.php/?autor=$2 [QSA]
RewriteRule ^(.+)editora/([0-9]+)/? pesquisa.php/?editora=$2 [QSA]
&lt;/IfModule&gt;</pre>
<p>A flag [QSA] (Query String Append) faz com que o Apache concatene todas as Query Strings tratadas nas regras definidas do arquivo. Desta forma, não importa a ordem que você utiliza para construir a URL. As duas formas abaixo irão funcionar:</p>
<p><a href="http://localhost/pesquisa/categoria/12/autor/22/editora/12" rel="nofollow">http://localhost/pesquisa/categoria/12/autor/22/editora/12</a></p>
<p><a href="http://localhost/pesquisa/editora/12/autor/22/categoria/12" rel="nofollow">http://localhost/pesquisa/editora/12/autor/22/categoria/12</a></p>
<p><strong>Um pouco sobre as expressões regulares</strong></p>
<p>Nunca me dei bem com essas benditas RegExp, mas vou tentar explicar as principais que utilizei neste exemplo:</p>
<pre>^(.+)categoria/([0-9]+)/?</pre>
<p>o ^ indica o início da string, neste caso, a URL do navegador, pra ser mais especifico, tudo o que está entre a primeira barra após o nome do host e a primeira interrogação (inicio da querystring), ou seja, no nosso exemplo de pretty URL, seria:<br />
/pesquisa/categoria/12/autor/22/editora/12</p>
<p>O &#8220;.+&#8221; indica que 1 ou vários caracteres podem ser encontrados entre o início da string (determinado pelo sinal ^) e a palavra &#8220;categoria/&#8221;. Estes dois caracteres estão entre parenteses &#8220;(.+)&#8221; pois desta forma o apache entende que o que for encontrado que corresponda à este expressão regular deve ser armazenado numa variável. Neste caso, por ser o primeiro parenteses, a variável será $1</p>
<p>A expressão [0-9] indica que procuramos caracteres numéricos (de 0 a 9). O sinal &#8220;+&#8221; após &#8220;[0-9]&#8221; indica que procuramos um ou mais caracteres desta espécie e os parenteses que envolvem a expressão toda &#8220;([0-9]+)&#8221; indica que queremos armazenar o resultado encontrado por essa expressão numa variável. Como é o segundo conjunto de parenteses, esta variável será a $2.</p>
<p>Finalmente, a expressão &#8220;/?&#8221; no fim da string, nos diz que pode haver ou não uma &#8220;/&#8221; no fim da expressão &#8220;categoria/([0-9]+)&#8221;. O sinal de interrogação representa 0 ou uma ocorrência da expressão que ele acompanha.</p>
<p>Ufa!</p>


<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>]]></content:encoded>
			<wfw:commentRss>http://www.richieri.com/2011/08/09/passando-informacoes-numa-url-utilizando-rewriterules-ao-inves-de-querystrings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

