0

XSS - Cross Site Scripting

criado por Luciano Rodrigues Furtado em 07/04/2003 7:37pm
Medidas Preventivas:

1) Não confie em nenhum dado que seja enviado aos seus scripts, não importando se eles chegam por POST, GET ou Cookies.

2) Use e abuse das funções preg_match, ereg, strstr que podem ser usadas para detectar dados maliciosos.

3) É de grande importância executar as funções strip_tags e htmlentities já que elas neutralizam o código script malicioso fornecido pelo usuário, antes de apresentar quaisquer informações fornecidas pelos mesmos.

4) Quando for escrever seu codigo SQL sempre use '' em torno de informações fornecidas pelos usuários, com o objetivo de se proteger de SQL Injection.

5) Use e abuse do uso de casts (int) e (float) quando estiver esperando inteiros ou números de ponto flutuante, para se assegurar que o usuário está submetendo o que vc está esperando. Por exemplo:

<?php
$_GET['codigo'] = (int) $_GET['codigo'];
?>

O código acima garante que o usuário está enviando um inteiro.

Podemos resumir isso tudo em uma única frase - Nunca confie em dados vindos do usuário (sempre use a função htmlentities). Assim você estará evitando a maior parte dos ataques XSS.

Se você quiser saber mais sobre SQL Injection e XSS visite os links abaixo:

- http://www.usatoday.com/life/cyber/tech/2001-08-31-hotmail-security-side.htm
- http://www.perl.com/pub/a/2002/02/20/css.html
- http://www.cert.org/advisories/CA-2000-02.html
- http://www.cert.org/tech_tips/cgi_metacharacters.html
- http://eyeonsecurity.net/papers/passporthijack.html
- http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf

Nós como programadores temos que entender a fundo estas táticas para que possamos combatê-las da forma mais eficaz, evitando assim que informações vitais de nossos clientes fiquem em risco.

Estou a disposição para qualquer dúvida. Enviem comentários abaixo!

Comentários:

Mostrando 1 - 7 de 7 comentários
addslashes num resolveria o problema?
depois colocando stripslashes para voltar...

abraços,
Rafael
30/04/2003 12:19pm (~18 anos atrás)

Otimo, eu tinha duvidas sobre o assunto, vc matou elas a pau cara. brigadao
21/04/2003 7:58pm (~18 anos atrás)

... disse:
muito bom o artigo. realmete o sql injection nao é muito provavel, mas pode sim ser utilizado para acabar com um banco de dados.

mesmo assim, o que se deve ter mais cuidado é o sequesto de cookies, porque isto pode levar uma pessoa a acessar a administração de um site, por exemplo, e aí sim acabar com o site!
17/04/2003 9:07pm (~18 anos atrás)

Cara gostei mto do artigo
o programador acima de bom , tem que ser esperto, malicioso, pensar em todo tipo de pessoa que vai acessar o seu site
nunca se sabe com que tipo de pessoa se depara na internet
11/04/2003 6:19pm (~18 anos atrás)

Newton Wagner disse:
Esclareceu sim!! :). muito obrigado!


10/04/2003 9:13am (~18 anos atrás)

Se uma pessoa alimenta o seu banco de dados e os dados que tem no seu banco de dados vão para web, ele pode por o iframe e fazer com que sua página entre em loop infinito.

Espero ter sido mais claro.

[]s
10/04/2003 6:24am (~18 anos atrás)

Newton Wagner disse:
Muito interessante a matéria, mas não ficou claro pra mim como esses iframes são adicionados à minha página. (como dito no 1º exemplo).
08/04/2003 7:53am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)