sábado, 5 de novembro de 2011

Instalando a Versão Mais Nova do TimThumb

  • O Que é o TimThumb??

O TimThumb é uma pequena aplicação em PHP criada para automatizar o redimensionamento de imagens em páginas web, tarefa especialmente importante na geração de thumbnails para galerias de fotos e imagens. Pode ser usada em qualquer portal cujo servidor suporte PHP, mas tem sido fortemente aplicada em temas para o Wordpress. O próprio Wordpress não usa o TimThumb (ao menos até as últimas versões lançadas até o momento da escrita deste artigo), mas muitos de seus temas o têm usado ostensivamente.

Página do Projeto TimThumb:


  • O Problema da Vulnerabilidade (Falha no TimThumb)

Recentemente, a Avast noticiou ter descoberto uma vulnerabilidade provocada por uma falha no TimThumb que permite a injeção de código malicioso em páginas que utilizam este componente, podendo infectar máquinas clientes e disseminar o código malicioso rapidamente. Mais informações, vide aqui. Uma lista ainda bem incompleta de temas do Wordpress que utilizam o TimThumb está aqui.


  • Como Saber se Uso o TimThumb??

O TimThumb nada mais é do que um arquivo PHP. Nos temas do Wordpress, ele pode ter os seguintes nomes: timthumb.php, thumb.php, image.php, além de alguns outros nomes menos utilizados. O comando abaixo lista possíveis lugares onde o TimThumb pode estar instalado:

cd /var/www [ou o local onde está sua pasta web]
find . | grep thumb.php
find . | grep image.php

Em último caso, você pode varrer todos os arquivos PHP das suas pastas virtuais, com o comando:

find . | grep .php

Anote os arquivos que os comandos geram em suas saídas. Estes são do TimThumb e precisam ser atualizados.


  • Atualizando o TimThumb (Passo-a-Passo)


1- Baixe a versão mais nova do TimThumb em:

http://timthumb.googlecode.com/svn/trunk/timthumb.php

Atente para que o arquivo tem, além do código em si, logo no início, algumas informações de registro, como a versão e a licença. Verifique estes dados na versão que está instalada em cada sistema web seu e valide se a sua versão é mesmo defasada e precisa ser atualizada. A versão pode ser encontrada em uma linha semelhante a esta:

define ('VERSION', '2.8.2');

2- Antes de qualquer coisa, PELAMORDEDEUS, faça backup dos arquivos que você pretende substituir. Mantenha estes backups durante algum tempo, para que seja fácil voltar os arquivos antigos caso algum erro seja detectado com a versão nova.

3- Verifique as permissões que foram dadas a cada arquivo de versão antiga que deve ser substituído. Verifique também o nome de usuário e grupo atribuído a estes arquivos. Para tanto, utilize o comando "ls -l".

4- Copie o arquivo que você baixou, correspondente à versão mais nova do TimThumb, para o mesmo local e com o mesmo nome do arquivo correspondente à versão antiga, de forma a sobreescrevê-lo. Faça isso para cada ocorrência do TimThumb em seus sistemas web. Restaure ao arquivo recém-copiado as mesmas permissões de acesso, nome de usuário e grupo, conforme configurado no arquivo antigo.

5- Teste, teste, teste. Testar nunca é demais.



  • Instalando o TimThumb Pela Primeira Vez!!

Embora este artigo seja inicialmente destinado a ajudar um administrador de sistemas a atualizar o TimThumb, esta seção foi criada para ajudar os desenvolvedores web que acaso venham até aqui e quereiram aprender a usar o TimThumb em seus sistemas.
Antes de instalar, note que o TimThumb é um script PHP e, evidentemente, necessita rodar em um servidor que suporte PHP.
Poucos passos podem propiciar uma boa instalação do TimThumb em seu sistema:

1- Copie o arquivo timthumb.php para seu sistema web, mantendo as permissões, usuário e grupo coerentes com os demais arquivos PHP.

2- No diretório onde o arquivo acima foi copiado, crie duas pastas especiais, que serão usadas para criação, utilização e armazenamento de thumbnails geradas automaticamente pelo TimThumb. Estas pastas são: cache e temp.

3- Defina para as pastas cache e temp a permissão 777. Apenas para estas pastas a permissão terá este valor, e não para arquivos PHP ou qualquer outro trecho de seu sistema!!

4- Verifique outro pré-requisito: é preciso se ter instalada a biblioteca GD Image, e esta precisa ser suportada pelo ser servidor web.


  • Conclusões

Este breve artigo pretende ajudar os administradores a atualizar seguramente um componente interno utilizado em temas do Wordpress (ou em outros sistemas web). Note que o procedimento é válido para qualquer versão, e não apenas no caso mencionado acima, a respeito da falha de segurança de algumas versões do componente. Espero ter ajudado e, claro, COMENTEM!!

13 comentários:

Anônimo disse...

Bem interessante e com explicações extras, isso é muito bom!

O Pajé disse...

Obrigado pelo retorno!! Fico feliz de ter podido contribuir e espero continuar ajudando sempre!!

FlashGSi disse...

Boa Tarde!

Estou tendo problemas ao deixar este aplicativo TimThumb neste site:

http://www.valeclassificados.net

Possuo um Servidor Virtualizado com Citrix XenServer porém já fiz várias configurações no APACHE HTTP SERVER e infelizmente o aplicativo não carregou.

Há alguma configuração extra no APACHE?

Segundo o WebDesigner, disse que está utilizando a versão mais atualizada do TimThumb.

Se puder informar o que pode ser feito, fico muito agradecido tendo em vista que esta dúvida com certeza sanará problemas de muitos.

Abraço!

Email: flashgsi@yahoo.com.br

O Pajé disse...

Olá FlashGSi,

Não existe, a princípio, nenhuma configuração extra a ser feita no Apache para que o TimThumb rode. Para sanar o problema, eu precisaria olhar com mais detalhes, mas posso recomendar alguns itens a serem verificados:

1- O TimThumb roda em PHP. Verifique se o seu PHP está instalado, usando a versão mais nova, se possível, e se o Apache está com o módulo de PHP ativado. Se houver alguma configuração especial neste módulo, verifique se o seu aplicativo web está contemplado para rodar o PHP corretamente;

2- Verifique o nome do arquivo e a pasta onde ele está. É preciso incluir o caminho correto para chamar o aplicativo. Muito erros decorrem disto, já que alguns programas, como os temas do Wordpress, costumam renomear o arquivo timthumb.php para thumb.php, icon.php ou similares.

3- Tem-se reportado erros no carregamento do sistemas PHP em navegadores rodando em modo privado. O Firefox e o Chrome têm este recurso. Faça o teste, vendo se o problema é este: basta desativar o modo "Navegação Privada" antes de rodar o programa.

4- Verifique se a função do TimThumb está sendo chamada com o nome correto e os parâmetros corretos e válidos.

Bom, eu começaria investigando por aí. Boa sorte!!

FlashGSi disse...

Amigo,

Foi descoberto o erro.

Vim aqui só para lhe agradecer.

O erro era nas permissões do próprio tema, que estava em 777 do FTP, sendo que o correto era deixar 755.

Fica aqui a dica para aqueles que encontrarem futuramente este mesmo erro e problema.

Gostaria de lhe oferecer GRATUITAMENTE, Hospedagem PHP de 500GB de Espaço para que possa colocar o seu site ou fórum no ar, sem custo algum.

Entre em contato pelo site:

http://www.valehostdigital.com.br

Faça o seu cadastro pelo Plano PHP Vale I 500GB que libero para você sem ônus financeiro algum.

O site tem ajudado bastante as pessoas e por isto, gostaria de contribuir também para que permaneça no ar.

Fica aqui a minha gratidão pela ajuda.

Que Deus lhe abençoe!

Anônimo disse...

Olá paje, estou a atualizar meu timthumb mais to com receio que acontecer alguma coisa negativa, fica a dúvida ... se eu atualizar ele, vou ter que colocar algum código do antigo ? mesmo sendo leigo tenho quase certeza que sim , pode da alguma dica do que eu vou ter mudar ?

O Pajé disse...

Olá Amigo,

A atualização do TimThumb não é tão complicada, mesmo para quem não entende de programação. Normalmente ele é apenas um arquivo (por exemplo: thumb.php) que precisa ser substituído pela versão mais nova. Não precisa colocar nenhum código novo, apenas substituir o arquivo de nome indicado.
Porém, atente para alguns detalhes:

1- Sempre faça, por garantia, cópia do arquivo antigo, já que, como se diz popularmente, "o seguro morreu de velho". Pode ser feita no mesmo local, apenas renomeando o arquivo. Exemplo: renomear "thumb.php" para "thumb.php.velho".
2- Coloque o arquivo novo com o mesmo nome e no mesmo diretório do antigo.
3- Algumas vezes, é necessário que se atribua ao arquivo novo o mesmo nome de usuário e grupo (verifique isto com o comando "ls -l") que o antigo tinha. Verifique também as mesmas permissões de acesso.

Trocar usuário: comando chown;
Trocar grupo: comando chgrp;
Trocar permissões: comando chmod.

4- Para que tudo tome efeito, reinicie o Apache (normalmente com o comando "/etc/init.d/apache2 restart").

Torço que consiga realizar com sucesso a atualização!! Tendo dúvidas, pode perguntar ao Pajé!!

PS: Caso tenha dúvidas com usuários e grupos no Linux, verifique este artigo:

http://pajeonline.blogspot.com.br/2010/05/gerenciando-grupos-e-usuarios-linux.html

e também este:

http://pajeonline.blogspot.com.br/2010/12/como-listar-os-usuarios-e-grupos.html

Anônimo disse...

Muito bom, me ajudou bastante com o tema edupress. valeu!algr9

O Pajé disse...

Obrigado, amigo!! Continue visitando o Pajé!! Fico feliz de poder ajudar!!

Anônimo disse...

Boa noite Pajé!

Eu fiz tudo como mostra o site da timthumb mas deu um erro na instalação foi tudo bem ele gerou a pasta cache e a miniatura mas quando abro a página ele me aparece como imagem quebrada e aquando eu clico na imagem quebrada o shadow box funcíona certinho a imagem aparece, é só a miniatura que está me dando problema....


<'imga' src="/scripts/tim.php?src=midias/01.jpg" alt="Imagem">

O Pajé disse...

Olá amigo,

A sua tag está errada. Observe que, em vez de img ..., vc escreveu imga ... Também usou aspas simples no nome da tag, o que não conforma com o padrão HTML. Use aspas (normal ou simples) apenas depois do sinal de igual, para dar um valor ao atributo.

Anônimo disse...

Está parte da tag imga foi porque ele não estava sendo postado no comentário, mas na minha escrita ela está img. Mas mesmo assim ele me dá um erro apenas na hora de jogar a imagem na pagina como miniatura me aparece como imagem quebrada. Voçê tem alguma idéia do que pode ser porque ele criou a pasta cache e a miniatura só na hora de buscar com esse trecho de código 'img src="scripts/tim.php?src=midias/01.jpg" alt="Imagem"'é que acontece o erro.

O Pajé disse...

Olá amigo,

Eu não consigo perceber o que possa estar errado. Mas tente verificar os seguintes itens:

1- Veja se a imagem está no local indicado na URL, com o nome correto;

2- Tente limpar o cache (apagar mesmo o conteúdo da pasta cache). Isto pode ser problema de cache. Em último caso, vc pode até reiniciar o Apache;

3- Verifique se o script do TimThumb que está sendo usado corresponde mesmo à versão que vc baixou e que é a mais nova.

Boa sorte!!