Rafa volta à ativa

O blog do Rafael Silva, CF maníaco mas que de vez enquando gosta de pular a cerca e ir brincar de PHP e ASP está de volta novamente.

Confiram:

http://www.clickrafa.com.br/blog/


Sobre o MPSB03-06 Security Patch

Como vocês viram abaixo a Macromedia lançou um patch de correção para uma vulnerabilidade de cross-site scripting (XSS). O que acontecia é que algumas variáveis (attributes.detail e cgi.http_referer) passadas que iam para a página de erro não eram tratados de forma adequada, e permitiam portanto ao atacante passar alguma informação adicional.

O tratamento das supracitadas, assim como de outras variáveis presentes no arquivo genérico de erro (detail.cfm) foram tratados com um simples #XMLFormat()#, transformando as tais “informações adicionais” que um atacante poderia passar. (Por exemplo: > vira >)

Em tempo para quem quiser brincar: a variável #cgi.user_agent# não está circundada por um XMLFormat(). 😉

E não custa dizer novamente: Não deixe o debug habilitado em servidores de acesso público! 🙂


Patch de correção para CFMX

A Macromedia acaba de lançar um pequeno patch de correção para o CFMX 6.0 e 6.1 solucionando uma vulnerabilidade XSS presente em servidores que usem “Site-wide error handler”.

MPSB03-06 Security Patch available for ColdFusion MX/ColdFusion cross-site scripting vulnerability with default error handlers


Evento Locaweb ontem, minhas impressões

O fórum de discussão sobre tecnologias promovido pela locaweb no Renaissance aqui em São Paulo foi um verdadeiro sucesso! Representando o .Net tivemos Marco Santana da Microsoft, representando Java (JSP), João Bolonha, da Borland, PHP com Fernando Lozano, autor de livros e figurinha conhecida da comunidade de desenvolvedores PHP. O ColdFusion, representado por quem vos escreve, não podia estar de fora e fez bonito.

O fórum foi mediado por Marcelo Tas, apresentador do programa Vitrine, da TV Cultura e teve momentos ótimos e tiradas sensacionais, num clima de guerra saudável entre os participantes. O fórum era previsto para durar 2 horas mas extendeu-se para 3 e meia, dado o grande interesse do público presente e o sucesso na dinâmica da mesa redonda. O ColdFusion causou frisson justamente por ser menos conhecido entre os presentes e pelas óbvias qualidades da tecnologia, tanto técnicas quanto econômicas (quebrei, com chave de ouro, o mito de que ASP e PHP é de graça) exaltadas com fervor e paixão junto a um público bastante animado, interessado e receptivo, que não imaginava ser tão simples programar em CFML. Muitas perguntas foram enviadas à mesa e respondidas na medida do possível. Devido ao enorme volume de perguntas (todas muito interessantes) a Locaweb vai abrir um fórum de discussão para tratar destas. Fique de olho no site deles.

Por esta razão arrisco dizer (com toda modéstia) que, das tecnologias participantes, a que mais se destacou foi o ColdFusion, seja pela novidade e atrativos inegáveis como ser multi-plataforma, integração com Flash e ser um aplicativo Java simples e fácil, mas poderoso/robusto ao mesmo tempo, seja por ter ganhado a simpatia logo de cara do mediador, Marcelo Tas, que ficou satisfeitíssimo ao saber que o ColdFusion era a única tecnologia presente com suporte à Mac!

Consegui também manter a calma necessária nos momentos mais “quentes” da discussão, onde o ColdFusion prevaleceu como uma opção nitidamente mais inteligente e sensata sobre as farpas que voavam entre Microsoft e PHP e pela complexidade do Java puro, apoiado pela Borland. Ao conversar com o público depois do evento e também com os organizadores, soube que a impressão que ficou é a de que a Macromedia, com o ColdFusion e o conceito de RIA, está se tornando uma opção extremamente viável e inteligente neste mundo de três gigantes (Java, .Net e OpenSource (PHP)), com as qualidades que todos nós conhecemos, dispensando maiores comentários neste blog.

A Macromedia também foi a única das participantes (além da própria Locaweb) a sortear brindes para a platéia. Sorteamos uma licença do DRK 4, HomeSite 5.5 e camisetas Macromedia, além de alguns CD’s de avaliação de softwares da empresa.

A audiência foi de aproximadamente 500 pessoas, todas desenvolvedores web em sua grande maioria, bastante atentos e com perguntas pertinentes. Um sucesso e uma experiência muitíssimo positiva para o nosso tão querido ColdFusion. Assim que tiver as fotos e o vídeo do evento posto por aqui para que todos possam assistir e ver.

Rio de Janeiro e Belo Horizonte são os próximos!

Este mesmo evento da Locaweb também acontecerá em BH e no Rio. No Rio, o evento será realizado no dia 16/out, no Hotel Copacabana Palace. Marco Antonio Gonçalves, coordenador adjunto do CFUG-Rio, estará participando do debate. E estará sorteando um kit com o Macromedia DRK 3 e 4, oferta do CFUG-Rio e do Programa de Grupos de Usuários da Macromedia.

Inscrições: http://www.locaweb.com.br/encontro

Até a próxima!


Steve Nelson blogado

Steve Nelson, papa do Fusebox lançou ontem seu blog. Não deixe de conferir, já existem posts bem interessantes.

http://steve.secretagents.com/index.cfm?fuseaction=fuseblog.MainPage

Quem foi que disse que blog é o lixo da web?


CFML History

Está disponível no site do CFUG-SP um histórico montado pela Macromedia de mudanças e modificações na sintaxe CFML (tags e funções) desde o ColdFusion 4.01 até a última versão 6.1. O histórico é bem leve (todo em HTML) e simples de ser consultado tanto como auxiliar nas horas de programação como para matar saudade de tags e funções “decapitadas” – ou seria “deprecated”? 🙂 É bastante instrutivo e interessante acompanhar a evolução da linguagem!

Dêm uma olhada e adicionem nos favoritos:

http://www.cfugsp.com.br/CFHistory


CSV para banco de dados…

Existem mil e uma maneiras (invente uma!) de se mandar dados de uma planilha em Excel para um banco de dados, mas uma maneira interessante é exportar os dados para um arquivo .CSV e através de um script jogar os dados no database:

<cffile action=”read” file=”c:tempdados.csv” variable=”csvFile”>

<cfquery name=”migra” datasource=”datasource”>

<cfloop index=”i” list=”#csvFile#” delimiters=”#chr(10)##chr(13)#”>
INSERT INTO contatos (IDstatus, nome, instituicao, telefone, email)
VALUES (1, #ListChangeDelims(ListQualify(i,”‘”,”;”),”,”,”;”)#);
</cfloop>

</cfquery>

Primeiro lê-se o arquivo .csv com os dados exportados da planilha em Excel e faz-se um loop sob o arquivo, usando uma quebra de linha como delimiter da “lista” (que é o .csv lido).

A função ListQualify coloca um apóstrofo (‘) antes de depois de cada ponto-e-vírgula (;), o que quer dizer que Nome do Fulano; Sobrenome do Fulano se transforma em ‘Nome do Fulano’;’Sobrenome do Fulano’.

A outra função usada, ListChangeDelims, bem, essa tá na cara :o) Ela muda o delimiter de ponto-e-vírgula para a vírgula propriamente dita, que é a usada para separar os valores na query.

E por fim, o cfloop está dentro da query por uma questão de performance: conecta-se ao banco de dados apenas uma vez, mandando um único statement sql completo, com todos os dados a serem inseridos. Note o ponto-e-vírgula ao final do VALUES (….).


Databases Access travadas

Da série “Best of CF-Brasil”…
O ColdFusion Server mantém a conexão a um banco de dados, e caso este seja um Access que você deseje apagar para efetuar o upload de um novo .mdb, não irá conseguir. Uma idéia interessante que surgiu tempos atrás na lista CF-Brasil, do Alexandre Scaramuzza foi gerar um erro (!) na query para derrubar a conexão; algo como fazer SELECT * de uma tabela que não existe.

Idéia interessante não?

Uma outra maneira de destravar temporariamente a conexão é:

<cfset destrava = cfusion_disable_dbconnections("nome_access_datasource","1")>

E para habilitar novamente:

<cfset trava = cfusion_disable_dbconnections("nome_access_datasource","0")>

Permanentemente a opção de travar pode ser desabilitada no ColdFusion Administrator: ao criar datasources ODBC Socket habilite as opções avançadas e desmarque a opção Maintain Connections (marcada como default). Reinicie o servidor ColdFusion. Desse modo as conexões ao .mdb em questão nunca serão exclusivas, o que requer cuidados na hora de atualizar a database, principalmente num meio multi-usuários.

Para desconectar temporariamente de todas as datasources:

<cfset CFUSION_DBCONNECTIONS_FLUSH()>

Leitura interessante:
How are database connections handled in ColdFusion?


Mais mamatas do CFMAIL

Outra grande melhoria encontrada no CFMX 6.1 é a possibilidade de especificiar um login e senha para o servidor SMTP. Até a versão 6.0, o servidor SMTP utilizado pelo ColdFusion deveria confiar (open relay) no IP do servidor CFMX para enviar mensagens. Um servidor SMTP com relay aberto é um problema (spam e segurança) e muitos provedores de hospedagem não habilitam isso por proteção ou mesmo por ignorância e desconhecimento desta necessidade nos seus servidores ColdFusion (o velho problema da incompetência brasileira em hospedagem CF). É comum vermos em listas de discussão as pessoas perguntando o porquê dos e-mails não serem enviados pelo ColdFusion. Espero que com esta nova feature isso acabe pois agora existem poucas desculpas, mesmo no lado do desenvolvedor, que se torna “independente” do provedor para o envio de mensagens via CFMAIL.

Agora você pode autenticar tanto via CFAdministrator quanto diretamente na tag CFMAIL. E o exemplo abaixo ilustra bem esta possibilidade:

cfmail1.gif

Simples não? No Administrator você pode utilizar uma string como essa: “usuario:senha@pop.servidor.com” (sem aspas, claro) no campo “e-mail server”. Dessa maneira todas as mensagens enviadas serão feitas de maneira autenticada no SMTP server, sem a necessidade de open relay. Fique atento apenas ao limite de recipientes que o seu servidor SMTP suporta. Muitos provedores como Terra, UOL, etc, limitam este envio em 100 recipientes (endereços de e-mail) por mensagem. Outro problema que pode acontecer está relacionado à server sandboxes security (caso você esteja usando, o que duvido muito nos servidores brasileiros) que deve permitir que você se conecte com servidores externos.


CFMX administrator com SSL

Já tinha notado e informado à MM sobre isso. Finalmente soltaram uma correção! Eu costumo (aliás, todos nós deveríamos) acessar o CFADM via SSL mas isso não era possível com o CFMX 6.1 devido a um bug no administrador.

Se você se encontra na mesma situação, dê uma olhada neste último hot-fix para o CFMX 6.1 (outros dois existentes eu já comentei aqui).

http://www.macromedia.com/support/coldfusion/ts/documents/navserver_blank.htm