Pergunta

Eu estou usando HTML Purifier para proteger o meu pedido de ataques XSS. Atualmente estou purificando o conteúdo de editores WYSIWYG porque esse é o único lugar onde os usuários estão autorizados a utilizar marcação XHTML.

A minha pergunta é, devo usar HTML Purifier também no nome de usuário e senha em um sistema de autenticação de login (ou em campos de entrada de sinal acima da página, tais como e-mail, nome, endereço, etc.)? Existe uma chance de ataque XSS lá?

Foi útil?

Solução

Você deve Purificar qualquer coisa que vai sempre possivelmente ser exibido em uma página. Porque com ataques XSS, hackers colocar em tags <script> ou outras tags maliciosos que podem ligar para outros sites.

As senhas e e-mails deve ser fino. As senhas nunca devem ser mostrado e-mails devem ter seu próprio validador para se certificar de que eles estão no formato adequado.

Finalmente, lembre-se sempre para colocar em htmlentities () no conteúdo.

Oh .. e olhada filter_var cabeceira. Muito boa maneira de filtrar variáveis.

Outras dicas

existem riscos

XSS onde os dados nunca entrou por um usuário pode ser visto por outros usuários. Mesmo se esses dados não está visível, não assuma que a necessidade de fazer isso não irá surgir.

Quanto ao nome de usuário e senha lugar, você nunca deve exibir uma senha, ou mesmo armazená-lo em um formulário que pode ser exibido (ou seja encyrpt com sha1()). Para nomes de usuários, tem uma restrição personagens legais como [A-Za-z0-9_]. Finalmente, como a outra resposta sugere, use suas línguas html função de codificação entidade por quaisquer dados inseridos que podem conter reservados ou caracteres especiais de HTML, o que impede esses dados de causar erros de sintaxe quando exibido.

Não, eu não usaria HTMLPurifier no nome de usuário e senha durante a autenticação de login. Em meus appllications eu usar nomes de usuários alfanuméricos e um filtro de validação de entrada e exibi-los com htmlspecialchars com ENT_QUOTES. Isso é muito eficaz e muito mais rápido do que o inferno HTMLPurifier. Ainda estou para ver um ataque XSS usando seqüência alfanumérica. E BTW HTMLPurifier é inútil quando a filtragem de conteúdo alfanumérico de qualquer maneira para se forçar a cadeia de entrada através de um filtro alfanumérico então não há nenhum ponto para exibi-lo com HTMLPurifier. Quando se trata de senhas nunca devem ser exibidas a qualquer um, em primeiro lugar o que elimina a possibilidade de XSS. E se, por algum motivo perverso que deseja exibir as senhas, então você deve criar seu aplicativo de tal forma a que ele permite que apenas o proprietário da senha para ser capaz de vê-lo, caso contrário, você está ferrado grande momento e XSS é a menor das sua preocupação!

HTML Purifier leva HTML como entrada e produz HTML como saída. Sua finalidade é permitir que o usuário digite html com alguns marcas, atributos e valores, enquanto filtra outros. Este usa uma lista branca para evitar quaisquer dados que podem conter scripts. Portanto, este é útil para algo como um editor WYSIWYG.

Nomes de usuários e senhas, por outro lado não são HTML . Eles são texto simples , de modo HTML purificador não é uma opção. Tentando usar HTML Purifier aqui seria ou corromper os dados, ou permitir ataques XSS.

Por exemplo, ele permite que o seguinte através inalterada, o que pode causar problemas de XSS quando inserido como um valor de atributo em alguns elementos:

" onclick="javascript:alert()" href="

Ou se alguém tentou usar símbolos especiais em sua senha, e entrou:

<password

então a sua senha se tornaria em branco, e torná-lo muito mais fácil de adivinhar.

Em vez disso, você deve codificar o texto. A codificação necessária depende do contexto, mas você pode usar htmlentities quando emitir esses valores se ater a regra # 0 e regra nº 1 , a Folha OWASP XSS Prevenção da fraude

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