Pergunta

O que é a melhor solução para sanear saída HTML no Rails (para evitar ataques XSS)?

Eu tenho duas opções: plug-in white_list ou método sanitize de Sanitize Helper http: //api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html. Para mim até hoje o plugin white_list funcionou melhor e, no passado, Sanitize era muito buggy, mas como parte do Core, provavelmente vai ser em desenvolvimento e ser apoiada por um tempo.

Foi útil?

Solução

Eu acho que o método h ajudante vai funcionar aqui:

<%= h @user.profile %>

Isto irá escapar colchetes e, portanto, neutralizar qualquer JavaScript embutido. Claro que isso também irá eliminar qualquer formatação seus usuários possam usar.

Se você deseja formatar, talvez olhar para remarcação.

Outras dicas

Pessoalmente, eu acho que não é uma pequena decisão de aceitar qualquer entrada de HTML em qualquer aplicativo web. Você pode testar para brancos / tags lista negra, tanto quanto você gosta, mas a menos que você está testando para o assentamento correto, alguém poderia entrar em uma série de marcas de fechamento, por exemplo

</td></tr></span></div>

e realmente mexer com o seu layout.

Eu normalmente dar às pessoas algo como têxteis para entrar sua marcação, desde que eu prefiro gastar meu tempo trabalhando na lógica de negócios do que o HTML de análise.

Claro que, se esta entrada de texto é mais fundamental para a sua aplicação (como, por exemplo, é para stackoverflow), então você provavelmente deve dar mais atenção à mão-rolando o seu próprio.

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