Segurança com PHP III – XSS

Olá meus queridos amigos amantes de Desenvolvimento! Dando continuidade aos artigos relacionados a Segurança com PHP, hoje falaremos do XSS.

Veja o primeiro artigo: Segurança com PHP I – SQL Injection

Veja o segundo artigo: Segurança com PHP II – PHP Injection

DEFINIÇÃO/FORMA DO ATAQUE

Sua sigla representa: Cross-Site Scripting, que nada mais é do que o fato de injetar códigos HTML, javascript e etc em uma página WEB através de um formulários ou uma URL contendo o JavaScript re-codificado para enganar o usuário.

A ideia é muito simples e não requer muitos conhecimentos em desenvolvimento: um simples script HTML, PHP e Javascript são suficiente para poder, rapidamente, roubar informações que ficam armazenados em Cookies. Irei mostrar alguns exemplos bem simples de ataque XSS.

FORMULÁRIO

Criei aqui um simples formulário, semelhante o do nosso primeiro artigo:

Logo acima do formulário, colocaremos o seguinte código:

Vamos realizar alguns testes:

TESTE I: colocaremos o nome “Kilderson Sena” no campo de entrada e submeteremos o formulário:

Captura de Tela 2016-04-20 às 20.48.47

TESTE II: colocaremos o seguinte valor dentro do campo e submeteremos o formulário:

Captura de Tela 2016-04-20 às 20.51.48

Captura de Tela 2016-04-20 às 20.52.25

OH MY GOD, viram só isso?! O Atacante insere scritps dentro do campo de entrada, e como o PHP interpreta os mesmos, ao invés deste “texto” ser impresso na página ele é executado!

OOOHH, E AGORA QUEM PODERÁ NOS DEFENDER ?

Calma, calma… há uma solução para isso e de forma simples! Como disse nos outros artigos:

“Sempre trate informações vindas do usuário (Escapar entradas) e formate as saídas.”

Para que este “texto” não seja executado, vamos fazer o seguinte código:

Vamos informar o mesmo texto do Teste II, e teremos o resultado:

Captura de Tela 2016-04-20 às 20.56.54

Vejam que o que foi impresso na variável $palavra foi exatamente o que o usuário informou no campo de entrada. Isso aconteceu por que a função htmlentities converteu todos os caracteres em entidades html.

Vejam o código-fonte da sua página e veja que ao invés de < foi escrito &lt; e assim sucessivamente para outros caracteres:

Captura de Tela 2016-04-20 às 20.57.12

Daí, vem um jovem guerreiro e pergunta:

“Mas o que um atacante pode fazer colocando alert’s no meu site? Javascripts não são tão perigosos assim.”

E minha resposta: é exatamente isso que o atacante quer que você pense! Javascript é uma linguagem muito poderosa! Podemos por exemplo recuperar dados de Cookies com javascript, com o código:

E depois de descoberto o(s) cookie(s) posso enviar para uma página maliciosa, como mostra:

Desta forma eu consigo informações dos cookies, onde geralmente são armazenados credenciais de acessos (dependendo da implementação), informações pessoais e dentre outras coisas.

É isso aí, mais um tipo de ataque desvendado!

Um forte abraço e até a próximo tópico!

Publicado por Kilderson Sena

Empreendedor, Experiente Analista e Desenvolvedor de Sistema e Líder de Equipes. Micro Empresário no ramo de Tecnologia, mas precisamente nos mercados de Desenvolvimento WEB, Desktop e Mobile.

2 comentários sobre “Segurança com PHP III – XSS”

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.