Posts com Tag ‘PHP’

FISL10: Expresso 2.0

Sábado, 27 Junho 2009

Depois da palestra que assisti no dia 25/06 da DATAPREV, fiquei muito curioso para conhecer melhor a ferramenta de e-mail Expresso, por isso não perdi a oportunidade.

Dessa vez, a palestra começou com atraso e com muita gente impaciente na porta de entrada da sala, devido a palestra anterior ter ultrapassado o limite de tempo. Auditório lotado, Walter Zapalowski apresentou a ferramenta ao público.

Na apresentação deu para perceber que o Expresso 2.0 é muito mais que um webmail, sendo uma ferramenta muito robusta para comunicação e está expandindo para outras áreas como colaboração. A ferramenta chega a conseguir se interligar com o Asterisk para fazer ligações VOIP com apenas um click.

Algo legal que o Zapalowski demonstrou é que os desenvolvedores (que não é apenas a SERPRO e a DATAPREV) estão muito preocupados em deixar a ferramenta extremamente configurável, para facilitar a adoção por outras empresas, seguindo o verdadeiro espírito de Software Livre.

Aparentemente existe uma colaboração muito grande com troca de código com a comunidade, o que é muito louvável.

Existe uma gama enorme de recursos, como possibilidade de usar Cerficação Digital de nível A1 (com a chave gravada em disco) e até A3 (com tokens), algo que não se tem notícia que outra ferramenta de webmail livre disponha.

Outros recursos que chamaram a atenção é a possibilidade de poder se trabalhar off-line no módulo de e-mail, sendo que está sendo implementando esse recurso para o módulo de agenda.

Além de poder trabalhar off-line, é possível sincronizar o Expresso com versões mais leves que rodam em celulares e outros dispositivos similares.

O Expresso nasceu na CELEPAR (Paraná) e desde 2005 é a ferramenta de comunicação eletrônica do governo de lá, sendo desenvolvido em PHP e AJAX, mas com uma gama muito grande de tecnologias livres agregadas como o GoogleGears, entre outras.

Durante a palestra eu fiquei com a impressão que o desenvolvimento do Expresso foi uma espécie de “resposta” ao fechamento do código do DIRETO da PROCERGS. Aliás, Marcos Mazoni, antigo diretor da PROCERGS (me lembro dele no primeiro FISL) abriu a apresentação da palestra (em tempo: agora ele é diretor da SERPRO)…

FISL10: CASE MySQL na Globo.com

Sexta-Feira, 26 Junho 2009

Inicialmente foi dado um aparado geral sobre a nova versão do MySQL Server 5.4, ainda em versão beta, por Henrique Leandro. Não vou me prender muito a isso, mas algumas novidades são a provável mudança na forma de designar a versão do produto (a próxima seria o MySQL 2010). Entre as novidades estão a possibilidade de usar computadores x86 com até 16 núcleos, otimização de subconsultas, melhorias no backup on-line, entre outros.

Após essa parte introdutória, Camila Dias da Globo.com, deu um aparado geral da evolução do uso do MySQL dentro da organização, bem como mudanças de paradigmas.

Algumas curiosidades:

- A Globo.com usa Software Livre (principalmente LAMP) desde 2002 em sistemas internos;

- Em 2007 houve um revolução dentro da empresa, onde foram adotados novos rumos: agilidade no desenvolvimento, com o uso de SCRUM, liberdade criativa, incremento significativo em participação em eventos nacionais e internacionais (inclusive o FISL);

- Graças a participação em vários eventos de tecnologia, houve uma mudança de mentalidade dentro da empresa, em relação ao uso do MySQL, pois tiveram contatos com outras grandes empresas com CASES de sucesso;

- De 2007 para 2009, o MySQL cresceu em cerca de 60% de uso dentro da Globo.com, ultrapassando outras soluções de SGDBs.

A Camila citou 2 casos de sucessos, onde foram empregados soluções em Software Livre, com destaque para o uso do MySQL:

Globo Amazônia

É uma solução mashup, composta de um portal com conteúdo relacionado + dados INPE + Orkut + Google Maps + Twitter

Lançado em setembro de 2008, em 1 mês superou as espectativas que se tinha de alcançar resultados em um prazo maior. Ela deve isso a junção da mídia convencional da TV, com a interatividade da Internet. Exemplo, se a média de acessos eram 1000 simultâneos, cada vez que o “Pedro Bial” dizia “votem no endereço tal”, pulava em poucos segundos para 20mil acessos.

Essa solução, apesar do alto volume de acessos, usa APENAS 2 servidores MySQL com replicação master-master, com uso agressivo de web cache para o conteúdo estático e eles implementaram um sistema de fila para a gravação dos dados no banco.

Projeto WordPress

Mais de 1000 blogs editoriais utilizando WordPress e uma série de plugins de cache e uso de MySQL “slave” para consultas. Essa solução também usa 2 servidores com replicação master-master, mas tem mais uma série de servidores slaves que são usados nas consultas, ou seja, os servidores masters são usados apenas para insert e update;

Eles tem um farm exclusivo para o Big Brother Brasil, dada a quantidade de acessos e comentários em um único post.

Algumas lições que eles tiveram durante o desenvolvimento com o uso do MySQL (observação: são deles, algumas coisas se contradizem a palestra de ontem sobre segurança de aplicativos com MySQL):

- Comece o projeto de maneira simples;

- Use uma versão realmente estável e bem testada do MySQL, a menos que realmente precise de algo novo que não tenha sido implementada na versão estável (eles usam a versão 5.0.7 nesses projetos citados);

- Use uma distribuição Linux compilada para 64bits. Isso é muito importante. Eles tiveram perda de desempenho significativa, quando as chaves de índices começaram a ficar muito grande em 32bits (agora eles só usam 64bits no sistema operacional e no banco de dados). Por curiosidade, nesses 2 projetos eles estão usando CentOS 5.2;

- Use InnoDB como engine padrão do MySQL, a menos que você realmente precise de algum recurso que só tenha em outro engine;

- Use transações curtas com o banco de dados;

- Use comandos simples. Evite de usar, por exemplo, consultas complexas. Eles tiveram uma experiência desagradável com uma consulta complexa com insert em ambiente de produção, na replicação dos dados;

- Use índices em memória;

- Coloque as regras de negócio na aplicação (!);

- Abuse do cache em memória.

Para o futuro do desenvolvimento na Globo.com, já foi definido:

- Que o MySQL será a plataforma oficial de SGDB;

- Novos sites já são produzidos com MySQL;

- Vão buscar uma evolução da arquitetura.

Para finalizar gostaria de dizer que não concordo com tudo que foi apresentado na palestra mais vale com um CASE e conhecer melhor como o software livre vem sendo implementado em empresas privadas (já citei exemplos de casos em empresas públicas).

Qualquer hora destas eu creio que vou também apresentar um CASE e apontar as minhas considerações sobre o uso do MySQL e PostgreSQL em soluções de sistemas web.   :-)

Para quem se interessar, eles estão com vagas na empresa para novos talentos. Quem quiser é só procurar a Camila no estande da Globo.com amanhã, dia 27/06.

FISL10: MySQL com segurança

Sexta-Feira, 26 Junho 2009

A última palestra que participei hoje (25/06), foi sobre o desenvolvimento de aplicações mais seguras com MySQL. Foi na sala 41B… Fiquei um pouco incrédulo quando as atendentes disseram que não teria tradução simultânea (“ele vai falar em espanhol, provavelmente”, disseram elas)… Na programação estava tudo em inglês. Tudo bem, encarei assim mesmo.

Realmente foi tudo em inglês, mas no final, a surpresa: o palestrante falava bem o português, mas disse que apresentou em inglês, porque a palestra foi submetida em inglês… Hehehe Fazer, o que né?  :-P

Meu inglês é péssimo, mas deu para “garimpar” algumas coisas da palestra:

- Tente deixar toda sua aplicação dentro do firewall;

- Use e abuse de stored procedures e views (realmente ele sugeriu abusar muito disso, mas eu creio ser muito complicado programar da forma proposta);

- Isole os dados do usuário da aplicação;

- A credencial do administrador do banco de dados deve ser diferente da credencial do usuário da aplicação. Aliás, o usuário da aplicação deve ter direitos mínimos. Em uma aplicação web, por exemplo, o usuário da aplicação pode ter direito de acessar os dados apenas na máquina local;

- Cuidado com os direitos dos arquivos: exemplo, um arquivo em php que acessa a base de dados, nunca deve ter direito de escrita para os usuários web. Ele sugeriu que o dono do arquivo tenha apenas acesso de escrita (sem acesso de execução) e os outros usuários (no caso, usuário web) tenha apenas acesso de leitura e execução;

- Procurar não transmitir dados no formato texto-puro. Tentar encriptar tudo (quero ver convencer os desenvolvedores a não usar mais o ftp, mas vou tentar, hehehe);

- Não grave senhas em formato texto-puro no filesystem (isso eu achei muito paranôico e muito difícil de implementar isso em uma aplicação web – descriptografar em tempo de boot e armazenar em uma variável, algo assim);

- Ter auditória do sistema (logs de acessos, etc);

- Ter certeza que você pode recuperar seus dados em caso de falha: backup, replicação, etc; ser capaz de refazer todos os passos, se necessário;


FISL10: Desenvolvimento de Geradores com PHP

Quinta-feira, 25 Junho 2009

A primeira palestra que participei hoje foi sobre frameworks com PHP, com Marcelino Leal. Fiquei um pouco decepcionado, pois pensei que seria um comparativo de soluções, mas no fim foi mais sobre Zend Code Generator (http://pt.wikipedia.org/wiki/Zend_Framework).

O palestrante até chegou a citar outras soluções, como Cake e Symphony, mas não fez nenhum tipo de comparativo, tão pouco citou as características destes outros. Já vi várias soluções nesse sentido, não apenas de PHP, mas no fim, cada um prega as suas “ideologias” e é muito difícil, para quem não está envolvido nisso, determinar qual é o melhor para a sua necessidade.

Mas algo interessante abordado é sobre os riscos de se criar dependência em um gerador de código. Suponhamos que ele seja descontinuado ou algo assim. Com certeza, não seria uma boa notícia para alguém que estivesse mantendo um sistema.

Resumindo: cuidado com suas escolhas!

FISL: Drupal

Sábado, 19 Abril 2008

Confesso que foi com muita desconfiança que fui conferir a palestra do CMS Dupral do dia 19/04. Como envolvia um partido político, fiquei com receio de ser algum tipo de palestra-propaganda, mas não foi o caso.

Não foi uma palestra do tipo “técnica”, mas foi interessante para ter uma noção do que é o Dupral. Eu já estou algum tempo tendo que avaliar um CMS e inclusive já pediram para desenvolver um, mas não gosto de ficar reinventando as coisas.

Neste link, é possível ver um post do blog de um dos palestrantes e inclusive tem um link para o PDF da apresentação do fórum.

Me pareceu um CMS bastante robusto e simples de implementar, e pretendo usá-lo, pelo menos em teste, brevemente.

Uma pergunta interessante que foi feita após a palestra é relativa a segurança. Uma pessoa levantou a hipótese de que se soubermos o código fonte do Drupal, principalmente em relação ao esquema do banco de dados (que por padrão é em MySQL), isso poderia facilitar ataques, como por exemplo, de SQL Injection.

Os palestrantes, com ajuda da Chuva Inc. deu uma resposta bastante aceitável: conhecer o código fonte e a estrutura do banco de dados, não significa que vai se conseguir invadir ou roubar os dados, pois o próprio CMS implementa vários mecanismos de segurança. Como complemento ao que eles disseram, vale seguir as dicas do que foi mostrado na palestra sobre segurança no PostgreSQL (aplicável, também, ao MySQL).

Por fim, vale citar o link da comunidade Dupral Brasil. Fica a reclamação que os palestrantes não divulgaram o valor cobrado para implementar a solução, hehehe

FISL: Primeiras palestras do último dia

Sábado, 19 Abril 2008

As duas primeiras palestras do dia 19/04 foram sobre vulnerabilidades de aplicações na web.

A primeira foi apresentada pelo grupo OWASP-BR, uma entidade que se preocupa em melhorar a segurança de aplicativos web. Em seguida, assisti uma palestra de Er Galvão Abbott sobre métodos para evitar cross-site-scripting.

O grupo OWASP-BR apresentou as 10 vulnerabilidades mais críticas encontradas em aplicações WEB, sendo que as mais críticas, em ordem, são:

  • Cross Site Scripting (XSS), que consiste em rodar código script malicioso no navegador web do cliente;
  • SQL Injection, que em geral se inicia forçando um erro na página, para que o cracker consiga determinar mais informações sobre o SGDB. Depois o cracker injeta código SQL, a fim de ter acesso não autorizado de informações;
  • Execução maliciosa de arquivos, que ocorre em sistema que aceitam arquivos de usuários remotos. Em geral, o cracker com acesso ao sistema envia uma página ou arquivo preparado, que depois é executado dentro do sistema web, podendo causar sérios danos ao sistema;
  • Referência insegura direta a objetos, onde o desenvolvedor expõe de forma direta informações internas que não deveriam aparecer, como por exemplo, diretórios, nome de arquivos, ID de usuários, etc, por meio de URL ou parâmetros de formulário.

Estas vunerabilidades correspondem a cerca de 70%. Este documento informa as outras vunerabilidades e dá mais detalhes sobre o assunto.

Sobre a palestra do Er. Galvão Abbott, uma curiosidade é que ele havia recebido um link de uma grande empresa com ataque XSS no e-mail. Ele, que é um usuário experiente, quase foi enganado pelo ataque, dada a sofisticação do mesmo. No slide, ele mostra o código mas protege e não divulga qual seria esta empresa. Perguntei para o “santo Google” e ele me respondeu: Lojas Ame…!!! Cheat!!!

Pior, a vunerabilidade não foi resolvida até agora! Isso é muito triste. Pelo que eu percebo, não dá mais para confiar nem quando o site tem SSL, está com o link correto, etc. Eu creio que ninguém está livre de falhas, mas não resolve-las é extremamente grave.

Fica uma das mensagem dele na palestra: Não se deve dar crédito excessivo à uma aplicação, e relaxar em cuidados com segurança, porque ela foi desenvolvida em linguagem x, foi desenvolvida pela empresa y, pertence a empresa z, ou está utilizando o sistema operacional xyz… E sempre procurar aplicar segurança concentrando no que deve ser permitido e não no que deve ser proibido, pois por melhor que seja o desenvolvedor, jamais ele irá prever todas as possibilidades de falha de segurança.

Ah, fazia algum tempo que eu não comprava mais nas Lojas Ame…, creio que vou continuar não comprando, hehehehe (ainda bem que recebi o brinde que o Terra me prometeu, quando eles mandaram um e-mail em massa solicitando atualização de dados, porque senão eu estaria seriamente preocupado agora, hehehe – bom, um cracker não mandaria um brinde real, né? vixe…)


Seguindo conselhos resolvi remover o nome da empresa, mas não fica difícil adivinhar quem é.