Login no Administrator do ColdFusion 7

Eu fiquei contente com o login no ColdFusion Administrator da nova versão do ColdFusion.

Na versão anterior, o sistema de login, criptografia e armazenamento da senha era muito precário. Foi só eu comentar com o Alex que ele fez um post, inclusive criticando (com razão) o sistema de login.

Na versão anterior (MX 6 e 6.1) havia um formulário de login onde era necessário digitar somente a senha. Embora o ideal seria algo como usuário-senha, é algo contornável (e extremamente recomendado, basta ler os posts sobre segurança aqui do CFGIGOLÔ) protegendo a pasta CFIDE/Administrator com um usuário e senha via web server.

A senha era enviada por padrão em formato plain-text, passível de spoof. Acessar o CF Administrator via https é algo que poucas vezes vi.

No servidor a senha então era encriptada com uma função (de encriptação de duas vias – encripta e desencripta) do próprio ColdFusion (Encrypt()), e comparada com a versão encriptada em um arquivo guardado em texto puro no servidor. Se o arquivo é em texto, e a criptografia é de duas mãos, é possível desencriptar a senha…

Era um sistema que funcionava, e bem até; mas não era seguro o suficiente para os paranóicos conscientes.

Na nova versão – anteriormente conhecida como Blackstone, na tela de login, ao digitar a senha, uma função JavaScript (no cliente portanto) encripta a senha utilizando SHA-1 (de mão única), criptografa a senha já encriptada (sim, de novo) utilizando uma key (agora em duas mãos) randômica (do tipo 1108059832081) e aí sim envia para o servidor, que se encarrega de verificar se a senha está correta. Ele recebe a senha criptografada duas vezes e a chave de uma delas; ele desencripta utilizando a chave e o resultado é a senha criptografada em SHA-1, que é comparada com a do arquivo password.properties.

Update: Um senão desse novo sistema é que há uma função interna (getAdminHash()) que retorna a senha hash (em criptografia SHA-1) do Administrator; a mesma senha que está no password.properties. Se alguém realmente quiser descobrir a senha, pode deixar um brute-force rodando até descobrir a senha. Vale dizer que para acessar essa função a dupla cfobject/createObject() entra em ação.


Nova certificação CFMX 7

A cada nova versão do tipo “milestone” (enhancements significativos) do ColdFusion, uma nova prova de certificação é criada e homologada, para desespero dos que acabaram de fazer a certificação para a versão anterior (normalmente são oferecidos descontos generosos nos meses que antecedem o lançamento de uma nova versão. Justamente o que aconteceu com a prova do CFMX 6.1).

Com CFMX 7 não podia ser diferente. Mas nem tudo está perdido… Se você pretende tirar sua certificação nesta nova versão, pode conseguir um desconto de 40% no valor da prova ou até mesmo um desconto de 100%. Veja:

Desconto de 40% para aqueles que participarem do “programa beta” (existe isso?) da nova prova de certificação, cliquem aqui, leiam, entendam e se inscrevam.

Desconto de 100% para aqueles que submeterem 7 sugestões de questões (interessante, não?) para a nova prova. Cliquem aqui, leiam, entendam e se inscrevam.

Nenhuma das duas opções é garantia de desconto (você precisa ser selecionado), mas a história mostra que todos os que fizeram a prova beta (independente se “passaram” ou não) ganharam o desconto (que pode ser utilizado num intervalo de +/- um ano). No segundo caso é interessante que você envie sugestões de questões que tenham a ver com os novos recursos do CFMX (não chovam no molhado). Vale notar também que (se não estou enganado) os vouchers de desconto são cumulativos, ou seja, se você já tiver um voucher de 15% como os que são distribuidos em reuniões de MUGs e também em livros como o do Forta, mais um voucher de desconto (se não me engano 25%) por ter feito uma prova na Vue, poderá ter um desconto de até 75% (por exemplo). Reciocínio de programador não vale: é claro que se o desconto ultrapassar os 100% ninguém vai te “pagar” (dar dinheiro de volta) para fazer o exame… 😉

Boa sorte!


Windows 2003 + ColdFusion MX 7 Security best pratices

O Terracini me mandou, e vale a pena ler:

Configuring ColdFusion MX 7 Server Security (print)

Nenhuma dica extraordinária, apenas uma coletânea de best-settings/pratices para a dobradinha CFMX 7 e Windows 2003 (mas as dicas para CFMX 7 são válidas para qualquer sistema operacional). Gostaria de ver mais artigos deste tipo no Devnet.


ColdFusion built-in webserver

O ColdFusion tem um servidor web (como o IIS e o Apache) bem simples embutido (built-in webserver), que quebra um bom galho, principalmente na máquina do desenvolvedor, que não precisa ter um IIS completo com esse e aquele recurso; apenas o ColdFusion rodando, de maneira simples.

O webserver roda normalmente como na porta 8500 (http://localhost:8500/) e seus arquivos ficam sob a pasta wwwroot no diretório de instalação do ColdFusion, como por exemplo, D:CFusionMXwwwroot.

Tente digitar “localhost:8500” (sem o http://) na barra de endereços do Internet Explorer. Não sei o porque cargas d’agua, ele muda para “local:8500”!! Eu nunca digito “http://” na frente de um endereço web! Seria mais simples se o acesso fosse simplesmente localhost, rodando na porta padrão para web, a 80.

É possível mudar o número da porta em que o built-in web server opera. Abra o {cfmx_root}runtimeserversdefaultSERVER-INFjrun.xml, e localize o seguinte:


<service class="jrun.servlet.http.WebService" name="WebService">
<attribute name="port">8500</attribute>
<attribute name="interface">*</attribute>
<attribute name="deactivated">false</attribute>
<attribute name="activeHandlerThreads">10</attribute>
<attribute name="minHandlerThreads">20</attribute>
<attribute name="threadWaitTimeout">350</attribute>
</service>

Mude a porta de 8500 para 80, salve o arquivo e reinicie o serviço do CF.

Ah, é possível ver mais informações sobre o atributo threadWaitTimeout nesse post do Alex.

O outro ponto é o webroot, que fica sob a pasta de instalação do CF. Esse caminho, que pode ser mais cômodo para o desenvolvedor se for em outra pasta, ou até mesmo em outro disco, também pode ser alterado.

Abra o arquivo {cfmx_root}wwwrootWEB-INFjrun-web.xml e localize o seguinte trecho:


<virtual-mapping>
<resource-path>/*</resource-path>
<system-path>d:/cfusionmx/wwwroot/</system-path>
</virtual-mapping>

Altere o conteúdo do system-path para o caminho de sua preferência e copie o diretório “CFIDE” para o seu novo webroot. Feita a alteração, reinicie o serviço do ColdFusion.


UDFs para validar CNPJ e CPF

Os leitores da lista CF-Brasil já viram a quantidade de pedidos por uma função para validar CNPJ e CPF. No arquivo .cfm há uma exemplo (bem simples) de utilização. Ambas funções retornam valor boleano (true/false) para o número de entrada.

Em caso de bugs e sugestões, entre em contato.

CNPJvalidate.zip
CPFvalidate.zip


Referências perdidas para o CFMX 7.0 e primeiras impressões

Está difícil encontrar o download de recursos extras do CFMX 7.0 tais como Tag update para HomeSite e CFStudio, Report Buider e extensões para o DWMX? A Macromedia fez o favor de escondê-los bem (só existe uma ou duas referências à estas páginas a partir da página principal do produto). Mas aqui vai:

Release Notes e afins:
http://www.macromedia.com/support/documentation/en/coldfusion/

Todos os downloads adicionais:
http://www.macromedia.com/software/coldfusion/downloads/

Vale notar que concomitante ao lançamento do CFMX 7.0 a Macromedia soltou uma série de technotes sobre esta versão. Alvo de algumas críticas (inclusive minhas), a Macromedia resolveu lançar apenas um RC antes da versão golden (final), que ainda estava recheada de bugs.

Não tive tempo de conferir as mudanças na versão final (7,0,0,91690), mas a minha noção é que o CFMX 7.0 é o bom e velho CFMX 6.1 (fato que já podiámos perceber no lançamento do Alpha1 – fui o único brasileiro a participar desta etapa inicial), porém com alguns adicionais de administração (vide melhorias em sandboxes security – vou falar mais a respeito ainda hoje e multiplas instâncias) e novos recursos que todos nós já conhecemos tais como Flash Forms, CFDocument e afins. No geral os recursos novos ainda precisam de amadurecimento e eu usaria-os com cautela, principalmente pela constatação (e inúmeros testemunhos iguais) de que eles são bastante vorazes no consumo de recursos (CPU e memória) do servidor. Podemos esperar por vários hotfixes e updaters que estarão por vir.

Mas isso tudo não deixa de ser empolgante. É sempre bom ver a tecnologia evoluir e incorporar novos recursos, especialmente estes que são bastante apelativos para usuários novos da tecnologia.


ColdFusion MX 7 Serial Crack by T0sC0’s

A nova versão do CF mal foi lançada e já estão circulando serial numbers e generators para registro desta nova versão. O CFGIGOLO facilita a vida dos interessados e disponibiliza um serial (encontrado numa famosa rede P2P) válido para o Macromedia ColdFusion MX 7 (ou 7.0) Enterprise.

Download ColdFusion MX 7.0 Serial Crack by T0sC0’s


Ele chegou! ColdFusion MX 7.0

cfmx_7_medium.gif O lançamento mais esperado do ano finalmente chegou. A Macromedia escolheu esta segunda-feira, dia 7/02, para lançar a nova versão do ColdFusion MX 7.0. Ainda é domingo, mas como as mudanças no site da Macromedia levam tempo, elas já começaram a aparecer, anunciando o lançamento.

O difícil vai ser dormir hoje, com tanta coisa para ler e conferir. Que desfile de carnaval, que nada, vou já fazer o meu download. 😉


ColdFusion: crescimento sustentado

Não sei se os leitores compartilham da mesma visão, mas eu percebo que a comunidade e a tecnologia está ganhando terreno vagarosa, mas constantemente (o que é mais importante) ao longo de um período de, pelo menos, 3 anos (desde o lançamento do CFMX). Este crescimento sustentado pode ser sentido no número de vagas disponíveis para programadores CF que vêem aumentando (repito, vagarosa, mas constantemente), no número de interessados na tecnologia (em listas de discussão, fóruns e afins), no número de provedores oferecendo CF, no número de eventos (e na qualidade destes) e também no destaque na mídia especializada.

Conheço o ColdFusion desde 1997, quando eu ainda engatinhava no desenvolvimento web (só vim utilizá-lo efetivamente em 1999, quando trabalhava no ISA e fiz meu primeiro website “dinâmico” com o CF 4.5 – quem se lembra da versão “Express”?). Nesta época tinhamos pouquíssima ou quase nenhuma divulgação da tecnologia, mesmo esta sendo uma época de “ouro”, com dinheiro fácil e sobrando em caixa. Sobrando inclusive para a Allaire, empresa que, se não estou enganado, investia mais dinheiro no país do que a Macromedia faz hoje. Me lembro de ter ido uma ou duas vezes em eventos promovidos pela Allaire e pela DTS (um deles inclusive a primeira vinda de Ben Forta ao Brasil – que somadas com a última, são 3, estou certo?), mas nada comparado ao que vemos hoje.

Uma das melhores manifestações deste crescimento sustentável pode ser vista na série de matérias e artigos sobre o ColdFusion na revista WWW.com.br. Revista que hoje se consolida como uma das mais presentes na área de desenvolvimento web. Vicente Marçal, competente programador CF e figura agradabilíssima (tive o prazer de conhecê-lo em 2003), é o maior responsável por esta promoção. De forma silenciosa e constante, Vicente marca presença, há cerca de um ano, com o nosso querido CF, num importante canal como a revista WWW. Um fato memorável se pensarmos que, proporcionalmente, deveriámos esperar artigos falando sobre ASP e PHP (por exemplo) ao invés de CF. Se você ainda não é leitor da revista (eu também não conhecia), vale a pena ler. A edição deste mês traz um artigo/tutorial sobre Verity no CF.

Vicente, a comunidade agradece. Continue fazendo este excelente trabalho que traz resultados práticos no crescimento e arrebatamento de novos usuários (no sentido tóxico da palavra) de CF 😉

Update: não sei como pude me esquecer de mencionar que a revista traz também (e pela terceira vez) um artigo assinado por Antonio Schuch, nosso country manager. Os artigos de Schuch são muito bons e trazem informações valiosas sobre conceitos de usabilidade, interfaces web, rich internet application e outros – ilustrados com cases na maioria das vezes. Vale a leitura 2 vezes. Resta saber se, com tantos elogios, eu ganho uma assinatura da revista? 😉


Incompetência Máxima

Durante este mês de Janeiro andou rolando uma discussão interessante na lista CF-Brasil sobre hospedagem ColdFusion no Brasil. Como muitos sabem, hospedagem de aplicações ColdFusion em ambiente compartilhado é assunto constante aqui no CFGIGOLO (basta buscar a respeito). Provedores de hospedagem compartilhada grandes como Locaweb, Digiweb e outras seguem as minhas recomendações. O mesmo vale para alguns provedores menores, como a Delix, que caiu nas graças da comunidade oferecendo uma hospedagem CF de qualidade (que espero que continue). Escrevi um artigo sobre o assunto que inclusive foi capa da primeira edição dedicada à segurança de CF no famoso CFDJ. Até hoje, quase que semanalmente, mantenho contato com estes provedores (em especial com a Locaweb) para saber como anda o serviço e instruí-los sobre como hospedar CF em ambiente compartilhado de forma correta. O que eu não entendo é como, mesmo assim, com tanta informação disponível e alardeada (aqui e em outros lugares), ainda existem pessoas e provedores que não nos dão ouvidos (no sentido de ouvir, entender, mas ignorar).

Sem qualquer modéstia: vocês deviam nos escutar. Ainda vejo gente na CF-Brasil dizendo que desabilitar o uso de CreateObject() é algo “relativo”. Tem gente que se ofende quando dizemos que é impossível oferecer hospedagem CF de qualidade a R$ 10,00 por mês. Tem gente até que acha que somos carrascos dos provedores de hospedagem porque recomendamos não habilitar certos recursos no servidor. É tão difícil entender que recomendomos por motivos de segurança óbvios, exaustivamente explicados, inclusive com a benção da nave-mãe? Oras, o que move tal raciocínio do “ser relativo” quando os fatos são tão óbvios e claros? Vontade de usar um determinado recurso em detrimento da segurança? Vontade de oferecer determinado recurso em detrimento da segurança?

Pelo bem de nossa profissão e nossa tecnologia, não caiam nessa e não apóiem empresas de hospedagem que pensam assim. Repito: não faltam posts aqui no CFGIGOLO, não faltam explicações na lista CF-Brasil. Tem até um tutorialzinho em bom e velho português com o básico do básico. Tem até suporte gratuito por telefone…

Explico: em Junho passado, gastei dinheiro à toa num interurbano de 50 minutos para o Rio. Na ocasião Terracini e eu descobrimos uma falha de segurança no CFMX cuja divulgação, nua e crua aqui no CFGIGOLO, foi alvo de críticas da comunidade (apesar de termos divulgado, no mesmo post, como remediar a mesma). Como reflexo à repercussão negativa do caso (somada a este outro caso, ainda em 2003), eu resolvi ligar pessoalmente para alguns provedores que eu sabia que estavam inseguros. Em especial este porque oferecia (e ainda oferece, veja mais adiante) um “test-drive” público, anônimo e irrestrito, sem qualquer controle, do seu serviço. O test-drive, somado à má configuração do CF, era um prato cheio para qualquer sujeito (não apenas cliente) mal intencionado.

Pelo que me consta, finalizada a conversa por telefone, o dono do provedor ficou bastante preocupado e seguiu nossas recomendações e protegeu seus servidores (e seus clientes), fato que pude verificar algum tempo depois, ao bisbilhotar o(s) servidor(es) do dito cujo. Porém…. Eis que hoje, vagando por aí, resolvo dar uma olhada no site do tal provedor. Entro no site e de cara fico especialmente intrigado com o seguinte anúncio de hospedagem “Cold Fusion” com “TODAS as Tags habilitadas”:

anuncio.gif

Na mesma hora pensei: finalmente um provedor de hospedagem resolveu oferecer múltiplas instâncias de ColdFusion. Nossas preces foram ouvidas. Mas o preço (40 pilas) era bom demais para ser verdade (infelizmente). Seguindo, mais abaixo no anúncio, vejo uma chamada para o tal “test-drive”. O mesmo test-drive que já nos havia levado a perceber (método descrito abaixo) as diversas falhas de segurança e entrar em contato com o provedor.

Curioso como sou, óbvio que fui testar novamente. Movido também pelo fato de (como já disse) ter gasto meu tempo no passado aconselhado-os a configurar o ColdFusion corretamente.

O resultado do meu teste: fiquei assustado e indignado, ainda mais quando Terracini e eu avisamos o provedor e orientamos (usando toda nossa capacidade de comunicação “idiot-proof” e técnica – até porque estavamos falando com um técnico, que, por obrigação, deve conhecer o que oferece a seus clientes) na solução dos problemas que detectamos. Só para constar: as senhas usadas no CFAdministrator eram as mesmas de outros servidores do mesmo provedor, incluindo outros serviços. Muito semelhante aos efeitos colaterais divulgados aqui, mas em empresas diferentes. Sem falar na cara de serviço com péssima performance, estilo “hospedagem de 10 reais” (uma das máquinas está absolutamente abarrotada de sites e literalmente, sem espaço em disco – veja este screenshot).

É a filosofia do “é relativo” na sua concepção mais completa. Ao me logar, via FTP, tratei de colocar no ar um script .cfm que sempre uso como uma espécie de “hello world” em servidores CF que ponho as mãos. Para minha surpresa uma das primeiras informações dadas pelo script era: “CFMX version: Standard”. Opa! Peraí. Hospedagem compartilhada com CF Standard? Bom, tomara que tenha ao menos usado a sandbox “global” que vêm nesta versão para proteger o servidor. Ledo engano…

Na seqüência subi outro script bonitinho que uso para navegar pela estrutura de pastas de um servidor aberto (como era o caso). Absolutamente tudo aberto! Pastas de clientes, arquivos zip com backups, arquivos txt com senhas, arquivos de sistema… um verdadeiro “samba do crioulo doido” (vejam estes screenshots – 1, 2 e 3). Fui encontrando problemas e mais problemas, alguns antigos, os mesmos que ajudamos a corrigir no passado quando a empresa ainda não ostentava orgulhosa, o anúncio de “TODAS as tags CFML habilitadas”…

A raiva por tal desprezo e falta de respeito para com os clientes é tanta que eu tenho vontade de divulgar o nome do provedor. Não vou fazer isso, mas também não vou fazer a menor força de escondê-lo, dada a situação, ainda mais depois de ter gasto 50 minutos de interurbano, escrito uns três e-mails longos e detalhados. Ainda mais depois de tanto tempo falando deste mesmo assunto por aqui e em todos os lugares públicos onde se fala de CF neste país.

Um dos ditos populares mais fomosos diz: “errar é humano, repetir o erro é burrice”. Isso não podia deixar de ser mais verdade neste caso. Tem também um outro dito, que cabe bem à esta situação. Sua ligação é bastante sutil, poucos entenderão o contexto, mas vale a pena mencioná-lo. Ele diz: “diz-me com quem andas, que te direi quem és”.

Chega de flames por hoje, vou dormir.