Falhas XSS e XSRF
Este tipo de falhas consiste em injectar código (normalmente JavaScript ou VBscript) no browser do utilizador, alterando o código da página, podendo assim levar ao roubo de informações. Erros em validações de parâmetros enviados pelo método GET ou POST são o principal motor deste tipo de falha.
Exemplo de código que não faz qualquer tipo de validação aos parâmetros enviados:
Código:
<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>
<?php
if(!empty($_GET)){
echo “Está a pesquisar por: “.$_GET['pesquisa'];
}
?>
</body>
</HTML>
Neste pequeno script em PHP, poderíamos “brincar” um bocadinho com o utilizador, fazendo-o clicar, por exemplo, neste link:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
<!--[if gte vml 1]> <![endif]--><!--[if !vml]--><!--[endif]-->
Neste 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 são, nada mais nada menos, que um tipo de ataques XSS, onde a página é alterada para enganar o utilizador e roubar informação. A análise a um ataque XSRF, neste caso no popular Hi5, pode ser visto aqui Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
As falhas de XSS e XSRF podem ser evitadas usando, por exemplo, uma função para remover tags HTML (ver a função strip_tags() no manual do PHP: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) ou para trocar certos caracteres pelo seu HTML entity (ver a função htmlentities() no manual do PHP:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).
Este tipo de falhas consiste em injectar código (normalmente JavaScript ou VBscript) no browser do utilizador, alterando o código da página, podendo assim levar ao roubo de informações. Erros em validações de parâmetros enviados pelo método GET ou POST são o principal motor deste tipo de falha.
Exemplo de código que não faz qualquer tipo de validação aos parâmetros enviados:
Código:
<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>
<?php
if(!empty($_GET)){
echo “Está a pesquisar por: “.$_GET['pesquisa'];
}
?>
</body>
</HTML>
Neste pequeno script em PHP, poderíamos “brincar” um bocadinho com o utilizador, fazendo-o clicar, por exemplo, neste link:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
<!--[if gte vml 1]> <![endif]--><!--[if !vml]--><!--[endif]-->
Neste 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 são, nada mais nada menos, que um tipo de ataques XSS, onde a página é alterada para enganar o utilizador e roubar informação. A análise a um ataque XSRF, neste caso no popular Hi5, pode ser visto aqui Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
As falhas de XSS e XSRF podem ser evitadas usando, por exemplo, uma função para remover tags HTML (ver a função strip_tags() no manual do PHP: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) ou para trocar certos caracteres pelo seu HTML entity (ver a função htmlentities() no manual do PHP:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).
Comment