<?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>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, OTRS, cultura popular e forró!</description>
	<lastBuildDate>Fri, 24 May 2013 02:38:51 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<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[<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>
]]></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[<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>
]]></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[<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>http://localhost/pesquisa.php?categoria=12&#038;autor=22&#038;editora=12</p>
<p>ou se escolhermos apenas o campo editora:</p>
<p>http://localhost/pesquisa.php?editora=12</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>http://localhost/pesquisa/categoria/12/autor/22/editora/12</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>http://localhost/pesquisa/categoria/12/autor/22/editora/12</p>
<p>http://localhost/pesquisa/editora/12/autor/22/categoria/12</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>
]]></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>
<!-- This Quick Cache file was built for (  www.richieri.com/category/tecnologia/software-livre/apache/feed/ ) in 0.40969 seconds, on Jun 18th, 2013 at 10:45 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Jun 18th, 2013 at 11:45 pm UTC -->