Pergunta

Estou usando um editor de rich text em uma página da web.O .NET tem um recurso que impede a postagem de tags HTML, então adicionei um trecho de JavaScript para alterar os colchetes angulares e o par de caracteres de alias antes da postagem.O alias é substituído no servidor pelo colchete angular necessário e depois armazenado no banco de dados.Deixando o XSS de lado, quais são as formas comuns de corrigir esse problema.(ou seja,Existe uma maneira melhor?)

Se você tiver comentários sobre XSS (cross-site scripting), tenho certeza que isso ajudará alguém.

Foi útil?

Solução

Na verdade, existe uma maneira de desativar esse "recurso".Isso permitirá que o usuário poste os caracteres que desejar e não haverá necessidade de converter caracteres em um alias usando Javascript.Veja este artigo para desabilitando validação de solicitação.Isso significa que você terá que fazer sua própria validação, mas pelo que parece na sua postagem, parece que é isso que você está procurando fazer de qualquer maneira.Você também pode desativá-lo por página seguindo as instruções aqui.

Outras dicas

Acho que a maneira mais segura de fazer isso é NÃO permitir que o usuário crie tags com seu WISYWIG.Talvez usando algo como um editor de descontos como neste site ou disponivel aqui. seria outra abordagem.

Mantenha também a diretiva Page ValidateRequest=true que deve impedir que a marcação seja enviada na solicitação. É claro que você precisará lidar com esse erro quando ele surgir.As pessoas sempre poderão injetar tags na solicitação de qualquer maneira, usando extensões do Firefox como Adulteração de dados, mas ValidateRequest=true deve pelo menos impedir que o ASP.NET os aceite.

Uma postagem direta sobre ataques XSS foi feita recentemente por Jeff aqui.Ele também fala sobre tornar seus cookies somente HttpOnly, o que é uma semi-defesa contra roubo de cookies.Boa sorte!

Meu primeiro comentário seria evitar usar JavaScript para alterar os colchetes angulares.Ignorar isso é tão simples quanto desabilitar o JavaScript no navegador.Quase todas as linguagens do lado do servidor possuem algum método utilitário que converte alguns caracteres HTML em suas entidades equivalentes.Por exemplo, PHP usa htmlentities() e tenho certeza de que o .NET possui um método utilitário equivalente.No mínimo, você pode substituir regex por colchetes angulares, parênteses e aspas duplas, e isso o levará a um longo caminho em direção a uma solução segura.

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