<?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>Rafael Bernard Araujo &#187; Programação</title>
	<atom:link href="http://rafael.bernard-araujo.com/categoria/tecnologia/programacao-tecnologia/feed" rel="self" type="application/rss+xml" />
	<link>http://rafael.bernard-araujo.com</link>
	<description>desenvolvendo... while(!success){  try(); }</description>
	<lastBuildDate>Wed, 25 Jan 2012 01:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Segurança no PHP&#160;II</title>
		<link>http://rafael.bernard-araujo.com/seguranca-no-php-ii.php</link>
		<comments>http://rafael.bernard-araujo.com/seguranca-no-php-ii.php#comments</comments>
		<pubDate>Fri, 16 Sep 2011 05:06:55 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[register globals]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[sessão]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=846</guid>
		<description><![CDATA[Requisito 4: Sem erros para o usuário Falaremos aqui de outro ponto importantíssimo na questão de segurança que é freqüentemente ignorado pelos desenvolvedores: as mensagens de erro. As mensagens de erro foram feitas para que o desenvolvedor possa trabalhar de forma mais prática e descobrir o que ele está fazendo de errado. Observem, entretando, que, [...]]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "cookie";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p><strong>Requisito 4: Sem erros para o usuário</strong></p>
<p>Falaremos aqui de outro ponto importantíssimo na questão de segurança que é freqüentemente ignorado pelos desenvolvedores: as mensagens de erro.</p>
<p>As mensagens de erro foram feitas para que o desenvolvedor possa trabalhar de forma mais prática e descobrir o que ele está fazendo de errado. Observem, entretando, que, quando uma aplicação atinge maturidade suficiente para &#8220;entrar em produção&#8221;, torna-se imperativo que o usuário não visualize mensagens de erro.</p>
<p>A razão disso é muito simples: as mensagens de erro freqüentemente trazem informações sensíveis. Observe como exemplo uma típica mensagem de falha de conexão com a base de dados:</p>
<p><code>Warning: <span style="color: #ff0000;">mysql</span>_connect() [function.mysql-connect]:<br />
Access denied for user '<span style="color: #ff0000;">foo</span>'@'<span style="color: #ff0000;">localhost</span>' (using password: YES)<br />
in <span style="color: #ff0000;">/usr/local/apache/htdocs/script.php</span> on line 2<br />
</code><br />
Note, através das partes destacadas, que esta mensagem me informa:</p>
<ol>
<li>O tipo de RDBMS: mysql</li>
<li>O usuário de conexão com a base: foo</li>
<li>Que este usuário está tentando uma conexão de dentro do servidor: localhost</li>
<li>O caminho absoluto da raiz web: /usr/local/apache/htdocs</li>
<li>O nome do script: script.php</li>
</ol>
<p>É por isso que, quando colocamos uma aplicação em produção, ocultamos as mensagens de erro e as gravamos diretamente em um arquivo de log. Isto é muito simples de implementar:</p>
<p>Exemplo:</p>
<p><code>display_errors = Off<br />
log_errors = On<br />
error_log = /log/php_errors.log<br />
</code><br />
<strong>Requisito #5: Esconda do servidor web o que ele não precisa acessar</strong></p>
<p>Quantos de nós não usamos em nossas aplicações um arquivo, tipicamente chamado de config.php ou setup.php, onde guardamos, por exemplo, usuário e senha da base de dados?</p>
<p>Não há nada de errado nisso, mas cuidado: se este arquivo não gera saída de informação em HTML, por que deixá-lo acessível via web?</p>
<p>Para esclarecermos o problema, vamos definir 3 coisas:</p>
<ol>
<li>minha raiz web é: /usr/local/apache/htdocs</li>
<li>meu arquivo de configuração fica localizado em /usr/local/htdocs/config/config.php</li>
<li>este é um código típico que usa este arquivo:</li>
</ol>
<p><code>require_once("/urs/local/htdocs/config/config.php");<br />
/* bla bla bla */<br />
</code><br />
Observe que o erro neste caso é confundir interpretador PHP e servidor web. O Apache (ou IIS, Xitami etc) não precisa saber onde está este arquivo. Isto é responsabilidade do interpretador.</p>
<p>Outro problema é que se arquivo fica desnecessariamente exposto, afinal de contas basta eu abrir um navegador e digitar:</p>
<p>http://www.meusite.com.br/config/config.php</p>
<p>Não faz sentido. Por mais que você possa argumentar que não há forma de ler o código-fonte deste arquivo, ainda assim, isto não muda o fato de que ele está desnecessariamente exposto.</p>
<p>A solução é simples: movemos o arquivo para fora da raiz web:</p>
<p>/usr/local/config/config.php</p>
<p>E depois apenas acertamos as permissões e corrigimos nosso código:</p>
<p><code>require_once("/urs/local/config/config.php");<br />
/* bla bla bla */<br />
</code><br />
A partir de agora nosso arquivo de configuração só pode ser lido por quem precisa dele: o interpretador PHP.</p>
<p><strong>Requisito #6: Use criptografia</strong></p>
<p>Dados sigilosos são chamados assim por um motivo. Quando tratamos especificamente de senhas é impressionante a quantidade de aplicações web que gravam senhas em texto puro na base de dados.</p>
<p>Ora, se a senha possui a importância que tem e quem a escolhe é o usuário, por que alguém mais precisa ler essa senha?</p>
<p>Se a senha possui este peso em nossa aplicação, não podemos nos dar o luxo de fazer com que ela trafegue pela aplicação totalmente exposta.</p>
<p>PHP implementa criptografia de várias formas, mas eu sugiro &#8211; para quem puder usar, pois exige instalação e configuração extra &#8211; a utilização da função <code>mcrypt</code>.</p>
<p>Os <em>hashes</em> MD5 e SHA-1 são opções válidas, mas o problema é a sua fragilidade: para o MD5 existe até dicionário de dados, enquanto o SHA-1 foi recentemente &#8220;quebrado&#8221; por um pesquisador chinês.</p>
<p><strong>Conclusão</strong></p>
<p>A implementação de regras básicas de segurança depende apena da boa vontade do desenvolvedor. Você deve ter percebido como a maior parte das soluções aqui apresentadas significam simples mudanças de hábito.</p>
<p>É mais do que tempo de nós, desenvolvedores PHP, deixarmos de lado nossos antigos vícios e começarmos a implementar boas práticas de programação.</p>
<p>Ganha o profissional, ganha a sua aplicação, ganha o seu cliente, ganha o mercado. Só quem perde nessa situação é quem tenta se aproveitar de nossa aplicação.</p>
<p><strong>Referências e links sugeridos</strong></p>
<p>[PHP Security Consortium] &#8211; <a class="extlink" href="http://phpsec.org/" target="_blank">http://phpsec.org/</a><br />
[PHP RS] &#8211; <a class="extlink" href="http://www.phprs.com.br/" target="_blank">http://www.phprs.com.br/</a></p>
<blockquote><p>Er Galvão Abbott trabalha há mais de dez anos com programação de websites e sistemas corporativos com interface web. Autodidata, teve seu primeiro contato com a linguagem HTML em 1995, quando a internet estreava no Brasil. Atualmente, além de lecionar em diversos cursos, tem se dedicado ao desenvolvimento de sistemas baseados na web, tendo nas linguagens PHP, Perl e JavaScript suas principais paixões.</p></blockquote>
<p><a title="Segurança no PHP" href="http://rafael.bernard-araujo.com/seguranca-no-php.php">Parte I</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/seguranca-no-php-ii.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviando mensagens com o&#160;PHPMailer</title>
		<link>http://rafael.bernard-araujo.com/enviando-mensagens-com-o-phpmailer.php</link>
		<comments>http://rafael.bernard-araujo.com/enviando-mensagens-com-o-phpmailer.php#comments</comments>
		<pubDate>Wed, 20 Jul 2011 16:55:26 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=784</guid>
		<description><![CDATA[O PHPMailer é um componente de envio de e-mail para servidores que exigem autenticação ou para um desenvolvedor que deseje configurações mais avançadas para a rotina de e-mail pelo php que o a função mail() não possua. É importante percebermos que um servidor que exige autenticação o faz por razões de segurança, para que o [...]]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "e-mail";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p>O <a title="PHPMailer" href="http://phpmailer.codeworxtech.com/">PHPMailer</a> é um componente de envio de e-mail para servidores que exigem autenticação ou para um desenvolvedor que deseje configurações mais avançadas para a rotina de e-mail pelo php que o a função <em>mail()</em> não possua. É importante percebermos que um servidor que exige autenticação o faz por razões de segurança, para que o mesmo não caia nas <a title="Estatísticas de Spam relatadas ao cert.br" href="http://www.antispam.br/estatisticas/">listas negras caracterizado como um servidor de Spams</a>.</p>
<p>A seguir, um exemplo de código para envio de e-mail pelo PHPMailer (para páginas de Contato ou Fale Conosco, por exemplo).</p>
<p>Obs: O ideal é que você baixe o PHPMailer e coloque no seu próprio servidor, deixando com que o seu domínio sempre tenha independência e rapidez no envio de mensagens através das suas páginas.</p>
<p><script src="https://gist.github.com/1095355.js"> </script></p>
<p>Relacionados:</p>
<ul>
<li><a href="http://noticias.aspecto.net/index.php/pagina-de-contato-usando-o-aspemail.html">Página de contato usando o AspEmail</a></li>
<li><a title="Página de contato usando o ASP.Net" href="http://noticias.aspecto.net/index.php/pagina-de-contato-em-aspnet.html">Página de contato usando o ASP.Net</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/enviando-mensagens-com-o-phpmailer.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tropeçando&#160;35</title>
		<link>http://rafael.bernard-araujo.com/tropecando-35.php</link>
		<comments>http://rafael.bernard-araujo.com/tropecando-35.php#comments</comments>
		<pubDate>Fri, 19 Nov 2010 12:13:16 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[Entretenimento]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tropeçando]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux Mint]]></category>
		<category><![CDATA[música]]></category>
		<category><![CDATA[Padrões]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=619</guid>
		<description><![CDATA[Blog do Márcio d&#8217;Ávila » IBM e Oracle colaboram no OpenJDK The Linux Mint Blog » Blog Archive » Linux Mint 10 “Julia” released! Responsabilidade de um dev client-side &#124; Boas práticas de Desenvolvimento com Padrões Web Adobe ® SendNow — Send large files Ajuda em envio de arquivos grandes pela internet Mougg &#8211; Your [...]]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "Padrões";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p><a href="http://blog.mhavila.com.br/2010/11/13/ibm-e-oracle-colaboram-no-openjdk/">Blog do Márcio d&#8217;Ávila » IBM e Oracle colaboram no OpenJDK</a></p>
<p><a href="http://blog.linuxmint.com/?p=1581">The Linux Mint Blog » Blog Archive » Linux Mint 10 “Julia” released!</a></p>
<p><a href="http://www.tableless.com.br/responsabilidade-de-um-dev-client-side">Responsabilidade de um dev client-side | Boas práticas de Desenvolvimento com Padrões Web</a></p>
<p><a href="https://sendnow.acrobat.com/welcome.html">Adobe ® SendNow — Send large files</a></p>
<blockquote><p>Ajuda em envio de arquivos grandes pela internet</p></blockquote>
<p><a href="http://www.mougg.com/">Mougg &#8211; Your Music in the Cloud</a></p>
<p><a href="http://www.crisdias.com/2010/11/17/descadastramento-de-listas-de-e-mail-youre-doing-it-wrong/">Descadastramento de listas de e-mail: you’re doing it wrong » CrisDias weblog</a></p>
<blockquote><p>É a Abril fazendo tudo errado. E enchendo a caixa de correio, nos deixando extremamente irritados.</p></blockquote>
<p><a href="http://tadificil.wordpress.com/2010/09/14/ta-dificil-se-descadastrar-da-abril/">Tá difícil… se descadastrar da Abril « Tá difícil…</a></p>
<p><a href="http://www.dicas-l.com.br/arquivo/clonando_particoes_ntfs.php">[Dicas-L] Clonando particoes NTFS</a></p>
<p><a href="http://meiobit.com/76835/the-social-network-e-se%e2%80%a6/">The Social Network: E se… « Meio Bit</a></p>
<blockquote><p>A história do Facebook contada pelo cinema e por vários diretores (Wes Anderson, Quentin Tarantino, Guillermo Del Toro etc)</p></blockquote>
<p><a href="http://www.tableless.com.br/navegabilidade-em-dispositivos-moveis">Navegabilidade em Dispositivos Móveis | Boas práticas de Desenvolvimento com Padrões Web</a></p>
<p><a href="http://falcon-dark.blogspot.com/2010/10/em-servidores-e-celulares-apenas.html">Livre Acesso por Falcon_Dark: Em servidores e celulares apenas</a></p>
<blockquote><p>O Linux e os usuários de <em>desktops</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/tropecando-35.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tropeçando&#160;31</title>
		<link>http://rafael.bernard-araujo.com/tropecando-31.php</link>
		<comments>http://rafael.bernard-araujo.com/tropecando-31.php#comments</comments>
		<pubDate>Fri, 03 Sep 2010 11:18:40 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[portable]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=565</guid>
		<description><![CDATA[Portable Brasil Portable UP welcome home : vim online Vim &#8211; Portal brasileiro do editor de textos Vim (VI) :: aurelio.net]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "vim";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p><a href="http://www.portablebrasil.net/">Portable Brasil</a></p>
<p><a href="http://portableup.blogspot.com/">Portable UP</a></p>
<p><a href="http://www.vim.org/">welcome home : vim online</a></p>
<p><a href="http://aurelio.net/vim/">Vim &#8211; Portal brasileiro do editor de textos Vim (VI) :: aurelio.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/tropecando-31.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tropeçando&#160;15</title>
		<link>http://rafael.bernard-araujo.com/tropecando-15.php</link>
		<comments>http://rafael.bernard-araujo.com/tropecando-15.php#comments</comments>
		<pubDate>Fri, 11 Dec 2009 13:02:18 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[Mídias sociais]]></category>
		<category><![CDATA[Negócios]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[banda larga]]></category>
		<category><![CDATA[energia]]></category>
		<category><![CDATA[idiomas]]></category>
		<category><![CDATA[inglês]]></category>
		<category><![CDATA[mídia social]]></category>
		<category><![CDATA[programador]]></category>
		<category><![CDATA[reunião]]></category>
		<category><![CDATA[smartphone]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=353</guid>
		<description><![CDATA[Por que reuniões são tóxicas? (ou por que programadores odeiam reuniões) &#124; Nome do Jogo Techguru 2.0 &#8211; Os tempos são outros: O Apagão, as midias sociais e os smartphones. Internet Legal » Arquivo » NIC.br, Inmetro e Anatel realizam avaliação do serviço de banda larga no Brasil 10 Best Free Tools To Learn A [...]]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "idiomas";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p><a href="http://www.nomedojogo.com/2009/11/11/por-que-reunioes-sao-toxicas-ou-por-que-programadores-odeiam-reunioes/?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+NomeDoJogo+%28Nome+do+Jogo%29&#038;utm_content=Google+Reader">Por que reuniões são tóxicas? (ou por que programadores odeiam reuniões) | Nome do Jogo</a></p>
<p><a href="http://www.techguru.com.br/Post.aspx?Cod=5418&#038;utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+techguru_brazil+%28TECHGURU%29&#038;utm_content=Google+Reader">Techguru 2.0 &#8211; Os tempos são outros: O Apagão, as midias sociais e os smartphones.</a></p>
<p><a href="http://www.internetlegal.com.br/2009/11/nic-br-inmetro-e-anatel-realizam-avaliacao-do-servico-de-banda-larga-no-brasil/">Internet Legal » Arquivo » NIC.br, Inmetro e Anatel realizam avaliação do serviço de banda larga no Brasil</a></p>
<p><a href="http://www.gigglecomputer.com/2009/10/10-best-free-tools-to-learn-foreign.html">10 Best Free Tools To Learn A Foreign Language More Effective</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/tropecando-15.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tropeçando&#160;11</title>
		<link>http://rafael.bernard-araujo.com/tropecando-11.php</link>
		<comments>http://rafael.bernard-araujo.com/tropecando-11.php#comments</comments>
		<pubDate>Fri, 25 Sep 2009 14:39:58 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Tropeçando]]></category>
		<category><![CDATA[armazenamento]]></category>
		<category><![CDATA[código-aberto]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=301</guid>
		<description><![CDATA[pdftk &#8211; the pdf toolkit Bem vindo &#124; HDFree Brasil Hospedagem de páginas gratuitas Dividindo dados em colunas &#8211; Mauro Pichiliani &#8211; SQL Server yfrog &#8211; Share your images/videos on Twitter! Media Converter &#8211; the fastest free online audio and video converter Top 100 Open Source Security Tools]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "código-aberto";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p><a href="http://www.accesspdf.com/pdftk/">pdftk &#8211; the pdf toolkit</a></p>
<p><a href="http://www.hdfree.com.br/">Bem vindo | HDFree Brasil</a></p>
<blockquote><p>Hospedagem de páginas gratuitas</p></blockquote>
<p><a href="http://imasters.uol.com.br/artigo/14294/sql_server/dividindo_dados_em_colunas/">Dividindo dados em colunas &#8211; Mauro Pichiliani &#8211; SQL Server</a></p>
<p><a href="http://yfrog.com/">yfrog &#8211; Share your images/videos on Twitter!</a></p>
<p><a href="http://www.mediaconverter.org/">Media Converter &#8211; the fastest free online audio and video converter</a></p>
<p><a href="http://www.jeromiejackson.com/index.php/top-100-security-tools">Top 100 Open Source Security Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/tropecando-11.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boas práticas de envio de&#160;e-mail</title>
		<link>http://rafael.bernard-araujo.com/boas-praticas-de-envio-de-e-mail.php</link>
		<comments>http://rafael.bernard-araujo.com/boas-praticas-de-envio-de-e-mail.php#comments</comments>
		<pubDate>Fri, 18 Sep 2009 18:13:06 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Spam]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=293</guid>
		<description><![CDATA[O envio de e-mails de newsletter é algo sensível para os servidores de hospedagem. Ainda que já tenhamos esse tipo de propaganda, ainda é grande o desconhecimento de como realizar o envio de maneira que não sejam identificados como fonte de spam. O que é spam? Spam é o termo usado para referir-se aos e-mails [...]]]></description>
			<content:encoded><![CDATA[<p>O envio de <em>e-mails</em> de <em>newsletter</em> é algo sensível para os servidores de hospedagem. Ainda que já tenhamos esse tipo de propaganda, ainda é grande o desconhecimento de como realizar o envio de maneira que não sejam identificados como fonte de spam.</p>
<p><a title="Conceito de spam - Antispam.br" href="http://antispam.br/conceito/" target="_blank">O que é spam?</a></p>
<blockquote><p>Spam é o termo usado para referir-se aos <em>e-mails</em> não     solicitados, que geralmente são enviados para um grande     número de pessoas. Quando o conteúdo é exclusivamente     comercial, esse tipo de mensagem é chamada de UCE (do inglês <em>Unsolicited Commercial E-mail</em>).</p></blockquote>
<p>O conceito é simple mesmo. Ainda que seja uma só mensagem, caso ela seja indesejada do destinatário já a caracteriza como spam e quem a recebeu pode reclamar aos órgão de controle de abuso da internet.</p>
<p>Diante da reclamação, o IP do remetente vai para análise e inicia-se uma busca por novas reclamações provenientes de envio de mensagens por aquele IP ou de mensagens iguais enviadas por aquele IP (nesse caso, a caracterização de de spam para envio em massa – <em>bulk mail</em>). Após a caracterização o IP entra no banco de dados desses órgão, que propagam a informação para os servidores de e-mail espalhados na internet, que começam a recusar <em>e-mails</em> que vierem daquele IP, ou seja, qualquer domínio que utilize aquele IP para o envio de mensagens é recusado, ainda que não tenha sido o domínio responsável pelo spam.</p>
<p>Como desenvolvedor, quero prevenir que meus clientes tenham estes problemas. Vou utilizar este espaço, que será sempre atualizado, para divulgar a política de utilização e as práticas corretas do envio delistas de <em>e-mail</em> (as <em>newsletters</em>).</p>
<ol>
<li>O envio deve ser para um destinatário por vez e não para mais de um endereço ao mesmo tempo;</li>
<li>O envio precisa ser feito com um período entre uma mensagem e outra (de 5 a 10 minutos, por exemplo);</li>
<li>É imprescindível monitorar o retorno dos e-mails inexistentes (ou outros erros) e removê-los da lista de envio;</li>
<li>Dar a opção em todas as mensagens enviadas para que o destinatário possa se descadastrar da lista.</li>
<li> Não iniciar o primeiro contato com o cliente por e-mail, ou seja, o envio do primeiro e-mail, sem prévia autorização do cliente, caracteriza a prática de spam.</li>
</ol>
<p>Leia também:</p>
<ul>
<li><a title="Boas práticas - antispam.br" href="http://antispam.br/boaspraticas/" target="_blank">Boas práticas – antispam.br</a></li>
<li><a title="Spam e a defesa - vídeos" href="http://noticias.aspecto.net/index.php/spam-e-a-defesa-videos.html">Spam e a defesa – vídeos</a></li>
<li><a title="Vídeos da campanha antispam.br" href="http://noticias.aspecto.net/index.php/videos-da-campanha-antispambr.html">Vídeos da campanha antispam.br</a></li>
<li> <a title="Permalink para &quot;A diferença entre o e-mail marketing e o spam&quot;" rel="bookmark" href="http://webinsider.uol.com.br/index.php/2008/07/22/a-diferenca-entre-o-e-mail-marketing-e-o-spam/">A diferença entre o e-mail marketing e o spam</a></li>
<li><a href="http://www.antispam.br/admin/estrutura-mensagem/">Estrutura da mensagem</a></li>
<li><a href="http://www.antispam.br/admin/tecnicas-spam/" target="_blank">Técnidas de envio de spam</a></li>
<li><a href="http://www.antispam.br/admin/listas-de-bloqueio/">Listas de bloqueio</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/boas-praticas-de-envio-de-e-mail.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tropeçando&#160;2</title>
		<link>http://rafael.bernard-araujo.com/tropecando2.php</link>
		<comments>http://rafael.bernard-araujo.com/tropecando2.php#comments</comments>
		<pubDate>Mon, 11 May 2009 17:48:46 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[claro]]></category>
		<category><![CDATA[cristão]]></category>
		<category><![CDATA[editora]]></category>
		<category><![CDATA[filme]]></category>
		<category><![CDATA[galeria de foto]]></category>
		<category><![CDATA[gráfico]]></category>
		<category><![CDATA[imagem]]></category>
		<category><![CDATA[menu de navegação]]></category>
		<category><![CDATA[tropeçando]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=240</guid>
		<description><![CDATA[O mundo de lunga: Conexão 3G &#8211; Solução para problema com DNS Para resolver o problema de DNSs para conexões com modems Huawei, que sobrescreve o /etc/resolv.conf 50+ Gorgeous Navigation Menus &#124; Vandelay Design Blog 50 exemplos de menu de navegação Edições Cristãs Editora Ltda. Chartle.net &#8211; interactive charts online! Ferramenta para montagem de gráfico [...]]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "tropeçando";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p><a href="http://www.mundolunga.com/2008/11/conxexo-3g-soluo-para-problema-com-dns.html">O mundo de lunga: Conexão 3G &#8211; Solução para problema com DNS</a></p>
<blockquote><p>Para resolver o problema de DNSs para conexões com modems Huawei, que sobrescreve o <code>/etc/resolv.conf</code></p></blockquote>
<p><a href="http://vandelaydesign.com/blog/galleries/inspirationalnavigation-menus/">50+ Gorgeous Navigation Menus | Vandelay Design Blog</a></p>
<blockquote><p>50 exemplos de menu de navegação</p></blockquote>
<p><a href="http://www.edicoescristas.com.br/">Edições Cristãs Editora Ltda.</a></p>
<p><a href="http://www.chartle.net/">Chartle.net &#8211; interactive charts online!</a></p>
<blockquote><p>Ferramenta para montagem de gráfico para colocar em sites</p></blockquote>
<p><a href="http://piwigo.org/">Piwigo.org | Photo Gallery Software for the Web</a></p>
<blockquote><p>Mais um exemplo de uma boa galeria de fotos</p></blockquote>
<p><a href="http://www.resizeyourimage.com/">Resize your image online &#8211; It&#8217;s easy, it&#8217;s free!</a></p>
<blockquote><p>Redimensionamento de imagens pela web</p></blockquote>
<p><a href="http://filmow.com/">Filmow</a></p>
<blockquote><p>&#8220;O Filmow foi criado para pessoas viciadas e apaixonadas por filmes. A principal ideia do Filmow é que você mostre aos seus amigos os filmes que já assistiu, comente sobre eles e dê sua opinião, na página do filme. Mas, para os que apenas gostam de filmes, o Filmow também é uma rede social onde é possível encontrar pessoas e amigos.</p>
<p>No Filmow você fica sabendo quais filmes são lançados, os que estão no cinema e aqueles que já estão em DVD, para você assistir em casa.&#8221; (<a href="http://filmow.com/sobre-o-filmow/">http://filmow.com/sobre-o-filmow/</a>)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/tropecando2.php/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ferramentas gratuitas de desenvolvimento &#8211;&#160;Microsoft</title>
		<link>http://rafael.bernard-araujo.com/ferramentas-gratuitas-de-desenvolvimento-microsoft.php</link>
		<comments>http://rafael.bernard-araujo.com/ferramentas-gratuitas-de-desenvolvimento-microsoft.php#comments</comments>
		<pubDate>Wed, 26 Nov 2008 20:20:59 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[Banco de dados]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[jogo]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[virtualização]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=146</guid>
		<description><![CDATA[A Microsoft, através do DreamSpark, está permitindo a utilização gratuita de vários de seus programas, como Visual Studio, Expression, SQL Server 2008 Developer, Windows 2008 Server Standart, Game Studio 2.0, Windows Server 2003, Virtual PC e vários outros. Garimpei no Como Instalar.]]></description>
			<content:encoded><![CDATA[<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "jogo";
            bb_bid  = "1613262";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><p>A Microsoft, através do <a title="DreamSpark" href="https://www.dreamspark.com/" target="_blank">DreamSpark</a>, está permitindo a utilização gratuita de vários de seus programas, como Visual Studio, Expression, SQL Server 2008 Developer, Windows 2008 Server Standart, Game Studio 2.0, Windows Server 2003, Virtual PC e vários outros. Garimpei no <a href="http://comoinstalar.com.br/ti/baixe-gratuitamente-softwares-microsoft-atraves-do-programa-dreamspark/" target="_blank">Como Instalar</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/ferramentas-gratuitas-de-desenvolvimento-microsoft.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validar CPF com&#160;php</title>
		<link>http://rafael.bernard-araujo.com/validar-cpf-com-php.php</link>
		<comments>http://rafael.bernard-araujo.com/validar-cpf-com-php.php#comments</comments>
		<pubDate>Wed, 26 Nov 2008 12:56:34 +0000</pubDate>
		<dc:creator>rafael</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://rafael.bernard-araujo.com/?p=139</guid>
		<description><![CDATA[Uma função utilíssima para cadastros que exigem CPF. Returna true se o CPF for válido e false se inválido. function valida_cpf($cpf) { // verifica se e numerico if(!is_numeric($cpf)) { return false; } // verifica se esta usando a repeticao de um numero if( ($cpf == '11111111111') &#124;&#124; ($cpf == '22222222222') &#124;&#124; ($cpf == '33333333333') &#124;&#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Uma função utilíssima para cadastros que exigem CPF. Returna <code>true</code> se o CPF for válido e <code>false</code> se inválido.</p>
<p><code><br />
function valida_cpf($cpf) {<br />
// verifica se e numerico<br />
if(!is_numeric($cpf)) {<br />
return false;<br />
}</code></p>
<p><code>// verifica se esta usando a repeticao de um numero<br />
if( ($cpf == '11111111111') || ($cpf == '22222222222') || ($cpf == '33333333333') || ($cpf == '44444444444') || ($cpf == '55555555555') || ($cpf == '66666666666') || ($cpf == '77777777777') || ($cpf == '88888888888') || ($cpf == '99999999999') || ($cpf == '00000000000') ) {<br />
return false;<br />
}</code></p>
<p><code>//PEGA O DIGITO VERIFIACADOR<br />
$dv_informado = substr($cpf, 9,2);</code></p>
<p><code>for($i=0; $i&lt;=8; $i++) {<br />
$digito[$i] = substr($cpf, $i,1);<br />
}</code></p>
<p><code>//CALCULA O VALOR DO 10º DIGITO DE VERIFICAÇÂO<br />
$posicao = 10;<br />
$soma = 0;</code></p>
<p><code>for($i=0; $i&lt;=8; $i++) {<br />
$soma = $soma + $digito[$i] * $posicao;<br />
$posicao = $posicao - 1;<br />
}</code></p>
<p><code>$digito[9] = $soma % 11;</code></p>
<p><code>if($digito[9] &lt; 2) {<br />
$digito[9] = 0;<br />
} else {<br />
$digito[9] = 11 - $digito[9];<br />
}</code></p>
<p><code>//CALCULA O VALOR DO 11º DIGITO DE VERIFICAÇÃO<br />
$posicao = 11;<br />
$soma = 0;</code></p>
<p><code>for ($i=0; $i&lt;=9; $i++) {<br />
$soma = $soma + $digito[$i] * $posicao;<br />
$posicao = $posicao - 1;<br />
}</code></p>
<p><code>$digito[10] = $soma % 11;</code></p>
<p><code>if ($digito[10] &lt; 2) {<br />
$digito[10] = 0;<br />
}<br />
else {<br />
$digito[10] = 11 - $digito[10];<br />
}</code></p>
<p><code>//VERIFICA SE O DV CALCULADO É IGUAL AO INFORMADO<br />
$dv = $digito[9] * 10 + $digito[10];<br />
if ($dv != $dv_informado) {<br />
return false;<br />
}</code></p>
<p><code>return true;<br />
} //  function valida_cpf($cpf)</code></p>
<p><a title="Valida CPF" href="/php/valida-cpf.php.txt" target="_blank">Copie o código aqui.</a></p>
<p>Código adaptado do <a href="http://imasters.uol.com.br/artigo/1403/php/validacao_de_cpf_usando_php/" target="_blank">iMasters</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bernard-araujo.com/validar-cpf-com-php.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

