Pergunta

Este link descreve uma exploração em meu aplicativo usando fckEditor:http://knitinr.blogspot.com/2008/07/script-exploit-via-fckeditor.html

Como posso tornar meu aplicativo seguro enquanto ainda uso o fckEditor?É uma configuração do fckEditor?É algum processamento que devo fazer no lado do servidor depois de pegar o texto do fckEditor?

É um quebra-cabeça porque fckEditor USOS html para sua formatação, então não posso simplesmente codificar HTML quando exibir o texto.

Foi útil?

Solução

Sanitize o lado do servidor HTML, não há outra escolha.Para PHP seria Purificador HTML, para .NET não sei.É complicado higienizar o HTML - não é suficiente remover tags de script, você também precisa tomar cuidado com os manipuladores de eventos on* e ainda mais, graças às estupidezes do IE, por exemplo.

Além disso, com HTML e CSS personalizados, é fácil sequestrar a aparência e o layout do seu site - usando sobreposição (absolutamente posicionada) que cobre toda a tela, etc.Esteja preparado para isso.

Outras dicas

O bug não é realmente culpa do FCKeditors.Contanto que você permita que os usuários editem o HTML que será exibido em seu site, eles sempre terão a possibilidade de causar danos, a menos que você verifique os dados antes de exibi-los.

Algumas pessoas usam codificação HTML para fazer isso, mas isso destruirá toda a formatação feita pelo FCKeditor, e não o que você deseja.


Talvez você possa usar o Biblioteca de scripts anti-sites cruzados da Microsoft.Amostras em MSDN

É algum processamento que devo fazer no lado do servidor depois de pegar o texto do fckEditor?

Precisamente.StackOverflow também teve alguns problemas iniciais relacionados a isso.A maneira mais fácil de resolver isso é usar uma biblioteca HTML para analisar a entrada do usuário e, em seguida, escapar de quaisquer tags que você não deseja na saída.Faça isso como uma etapa de pós-processamento ao imprimir na página – os dados no banco de dados devem ser exatamente os mesmos que o usuário digitou.

Por exemplo, se o usuário inserir <b><script>evil here</script></b>, seu código o traduziria para <b>&lt;script&gt;evil here&lt;/script&gt;</b> antes de renderizar a página.

E não use expressões regulares para resolver isso, isso é apenas um convite para alguém inteligente quebrar novamente.

O FCKEditor pode ser configurado para usar apenas algumas tags.Você precisará codificar tudo, exceto aquelas poucas tags.

Essas tags são:<strong> <em> <u> <ol> <ul> <li> <p> <blockquote> <font> <span>.

A tag da fonte deve ter apenas atributos de face e tamanho.A tag span deve ter apenas um atributo de classe.

Nenhum outro atributo deve ser permitido para essas tags.

Eu entendo os DONTS.Estou faltando um DO.

O uso do FCKEditor é um requisito ou você pode usar um editor/linguagem de marcação diferente?Aconselho usar Markdown e WMD Editor, a mesma linguagem usada pelo StackOverflow.A biblioteca Markdown para .NET deve ter uma opção para escapar de todas as tags HTML - certifique-se de ativá-la.

XSS é uma coisa complicada.Sugiro algumas leituras:

De qualquer forma, meu resumo é que, no final das contas, você só deve permitir itens estritamente aceitos;você não pode rejeitar vetores de exploração conhecidos porque ou estará sempre por trás da eterna luta.

Acho que a questão levantada por alguns não é que o Fckeditor codifique apenas algumas tags.Esta é uma suposição ingênua de que um usuário malvado usará o Fckeditor para escrever sua maldade.As ferramentas que permitem a alteração manual de entradas são inúmeras.

Eu trato todos os dados do usuário como contaminados;e use Markdown para converter texto em HTML.Ele limpa qualquer HTML encontrado no texto, o que reduz a malícia.

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