Pergunta

Eu tenho usado HTML purificador para eliminar qualquer material suspeito vindo do meu pública enfrentando editor WYSIWYG. O HTML recebida também é exibido na parte pública do site.

Eu permiti links, e eu também URLs automaticamente Linkify em texto simples (usando o purificador).

Existe uma maneira de permitir que links externos, mas as ligações proibição para o mesmo domínio? Por exemplo o meu domínio é www.example.com

http://www.google.com será ligado.

http://www.example.com/logout/ não será vinculada.

Estou olhando para minimizar qualquer interferência de usuários mal-intencionados. Devo apenas fazer o meu link de logout uma ação de formulário com um par de chaves POST / valor para impedir que isso aconteça?

Graças

Foi útil?

Solução

O seu login / out formulário deve ser sempre POST-only.

Não se preocupe com um valor de verificação, mas este é um problema de segurança muito importante - as operações que mudam o estado do servidor web deve ser solicitações POST. Você nunca deve permitir http://example.com/object?action=delete , ou qualquer sua variante. PHP encoraja má prática nesta matéria, mas você deve sempre usar um ou o outro, e nunca permitir que ambos.

Se os usuários podem escrever formas em seu editor WYSIWYG, você tem problemas muito maiores do que isso.

Para responder à sua pergunta original, para ligações internas com deficiência, uso URI.HostBlacklist e certifique-se de conjunto URI.MakeAbsolute:

http://htmlpurifier.org/live/configdoc/plain.html # URI.HostBlacklist

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