Usando HTML Purifier para parar links para próprio site
-
18-09-2019 - |
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
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