Medidas de prevenção de XSS vulnerabilidade (como Twitter de um alguns dias antes)

StackOverflow https://stackoverflow.com/questions/816224

  •  03-07-2019
  •  | 
  •  

Pergunta

Mesmo locais famosos como o Twitter está sofrendo de vulnerabilidade XSS, o que devemos fazer para evitar este tipo de ataque?

Foi útil?

Solução

O # 1 coisa que você pode fazer é definir os cookies para HTTP Apenas ... que pelo menos protege contra seqüestro de cookie de sessão. Como se alguém roubar seu cookie quando você é provável administrador do seu próprio site.

O resto se resume a validar todas as entradas do usuário.

  • REGRA # 0 - Nunca insira dados não confiáveis ??Exceto em locais permitidos
  • REGRA # 1 - HTML Fuja antes de inserir não confiável de dados em Elemento HTML conteúdo
  • REGRA # 2 - Atributo escape antes de inserir não confiável de dados em HTML Atributos Comuns
  • Regra # 3 - JavaScript escapar antes de Inserção não confiável de dados em valores HTML JavaScript de dados
  • REGRA # 4 - CSS fuga antes de inserir não confiável de dados em valores Propriedade de estilo HTML
  • REGRA # 5 - URL do escape antes de inserir não confiável de dados em HTML URL Atributos

Muito demorado assunto discutido detalhadamente em:

http://www.owasp.org/index.php/XSS_ ( Cross_Site_Scripting) _Prevention_Cheat_Sheet

http://www.owasp.org/index.php/Cross_site_scripting

XSS é apenas uma das muitas façanhas e cada dev web deve aprender a OWASP top 10 pelo coração imho

http://www.owasp.org/index.php/Top_10_2007

Outras dicas

Assim como você pode fazer a injeção SQL um não-problema usando instruções preparadas, você pode fazer XSS não-problema usando templates motor (serializer DOM) que faz coisa semelhante.

Projete seu aplicativo para que toda a saída passa por templates motor. Faça esse motor de templates HTML-escapa todos os dados por padrão. Desta forma, você terá sistema que é seguro por padrão e não depende de seres humanos (e resto do grande sistema) ser diligente em escapar de HTML.

Eu não o que você escreve seu código com, mas se o seu asp.net uso, você está parcialmente coberto. asp.net tem o que eles chamam de validação de solicitação que, quando ativada, ela evitar script malicioso a ser introduzido através da entrada do usuário.

Mas, às vezes, você tem que permitir algum tipo de editor de texto como o que você digitou a esta pergunta. Neste caso, você terá de validação de solicitação em parte desativar para permitir que alguns "rich text" html a ser introduzidas pelo usuário final. Neste caso, você terá que construir algum tipo de lista branca mecanismo de filtragem.

FYI, eu não sei sobre os outros, mas Microsft tem biblioteca chamada Anti-Xss.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top