O que é Cross-site Scripting “XSS”

O que é Cross-site Scripting “XSS” e como posso proteger o meu site / aplicação contra esse tipo de ataque?

o que é Cross-site Scripting "XSS" e como proteger meu site?

Basicamente o Cross-site Scripting explora uma “simples” vulnerabilidade causada pela falta de um filtro nos inputs dos usuários.

Os dados armazenados no banco de dados não são devidamente filtrados, dessa forma é permitido que o usuário salve um código Javascript invés de uma String, que é o valor esperado.

Exemplo de XSS

Digite um código JS no campo abaixo: Ex “ alert(10001); “.


Vardump da variável “test”:

Nada foi encontrado na variável POST:
NULL

No exemplo acima, além do var_dump da variável, estou utilizando o echo para exibir o conteúdo na página.

E é exatamente ai que ocorre a falha de segurança, permitindo que um script seja incluso na minha página sem nenhum filtro.

Imagine agora que o valor enviado acima fosse salvo no banco, como um “comentário” de um usuário.

Facilmente o agressor poderia criar um redirecionamento da página contendo a listagem de comentários para o seu site utilizando:

<script>location.href='https://rogertakemiya.com.br';</script>

Aonde o código acima é enviado no INPUT que é destinado ao comentário real.

Cross Site Scripting como evitar

Em cada linguagem de programação existirá funções nativas que irão fornecer um filtro para remover HTML e Javascript.

É muito importante que você filtre qualquer tipo de dado fornecido pelos usuários do seu sistema, tanto no momento que você for salvar no banco de dados, como também quando você for exibi-los.

XSS pode causar um grande transtorno para você e danificar permanentemente a reputação do seu site ou sistema.

No PHP:

Você pode utilizar a função htmlspecialchars nos valores antes de salvar no banco de dados e quando for exibi-los

htmlspecialchars($string, ENT_QUOTES, 'UTF-8');

ASP.NET

Microsoft tem um artigo dedicado a como filtrar sua aplicação contra XSS.

https://docs.microsoft.com/en-us/aspnet/core/security/cross-site-scripting

Python

from jinja2 import utils

str(utils.escape('texto a ser validado'))

Java JSP

/* exemplos em JSP */
<p><c:out value="${bean.userControlledValue}"></p>

<p><input name="test" value="${fn:escapeXml(param.paramtest)}"></p>

Conclusão

Independente da linguagem que for utilizada é interessante você utilizar uma função “global” por onde passa todos os valores que são enviados e salvos pelos os usuários.

Dentro dessa função, você aplica os filtros que forem necessários utilizando as funções nativas ou bibliotecas.

Dessa forma, sempre que você precisar adicionar um novo filtro ou atualizar uma função que ficou “outdated” você não precisará revisar todo o seu código fonte.

Bom desenvolvimento! 😉

Resumo
O que é Cross-site Scripting e como se previnir
Nome do Artigo
O que é Cross-site Scripting e como se previnir
Descrição
Neste post você irá apreender à como proteger seu site
Autor
Editor
Roger Mauricio Takemiya
Logo do Editor

Avalie este artigo!

Clique nas estrelas, para dar uma nota de 1 à 5.

1 estrela2 estrelas3 estrelas4 estrelas5 estrelas (1 votaram, média: 2,00 de 5)
Loading...

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *