Um provedor de serviços Laravel simples para usar facilmente o HTMLPurifier dentro do Laravel. Do site deles:
HTML Purifier é uma biblioteca de filtros HTML compatível com os padrões escrita em PHP. O HTML Purifier não apenas removerá todos os códigos maliciosos (mais conhecidos como XSS) com uma lista de permissões totalmente auditada, segura e permissiva, mas também garantirá que seus documentos sejam compatíveis com os padrões, algo que só é possível com um conhecimento abrangente das especificações do W3C. Cansado de usar BBCode devido ao cenário atual de filtros HTML deficientes ou inseguros? Você tem um editor WYSIWYG, mas nunca conseguiu usá-lo? Procurando componentes de código aberto de alta qualidade, em conformidade com os padrões, para o aplicativo que você está criando? O Purificador HTML é para você!
Exija este pacote com o compositor:
composer require mews/purifier
O provedor de serviços será descoberto automaticamente. Você não precisa adicionar o provedor em nenhum lugar.
Exija este pacote com o compositor:
composer require mews/purifier
Encontre a chave providers
em config/app.php
e registre o HTMLPurifier Service Provider.
' providers ' => [
// ...
Mews Purifier PurifierServiceProvider::class,
]
Encontre a chave aliases
em config/app.php
e registre o alias do Purificador.
' aliases ' => [
// ...
' Purifier ' => Mews Purifier Facades Purifier::class,
]
Confira HTMLPurifier para Laravel 4
Use estes métodos dentro de suas solicitações ou middleware, sempre que precisar limpar o HTML:
clean (Input:: get ( ' inputname ' ));
ou
Purifier:: clean (Input:: get ( ' inputname ' ));
configuração dinâmica
clean ( ' This is my H1 title ' , ' titles ' );
clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
ou
Purifier:: clean ( ' This is my H1 title ' , ' titles ' );
Purifier:: clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
usar filtro URI
Purifier:: clean ( ' This is my H1 title ' , ' titles ' , function ( HTMLPurifier_Config $ config ) {
$ uri = $ config -> getDefinition ( ' URI ' );
$ uri -> addFilter ( new HTMLPurifier_URIFilter_NameOfFilter (), $ config );
});
Alternativamente, no Laravel 7+, se você deseja limpar seu HTML dentro de seus modelos do Eloquent, você pode usar nossas conversões personalizadas:
<?php
namespace App Models ;
use Illuminate Database Eloquent Model ;
use Mews Purifier Casts CleanHtml ;
use Mews Purifier Casts CleanHtmlInput ;
use Mews Purifier Casts CleanHtmlOutput ;
class Monster extends Model
{
protected $ casts = [
' bio ' => CleanHtml::class, // cleans both when getting and setting the value
' description ' => CleanHtmlInput::class, // cleans when setting the value
' history ' => CleanHtmlOutput::class, // cleans when getting the value
];
}
Para usar suas próprias configurações, publique config.
php artisan vendor:publish --provider="MewsPurifierPurifierServiceProvider"
O arquivo de configuração config/purifier.php
deve ficar assim
return [
' encoding ' => ' UTF-8 ' ,
' finalize ' => true ,
' ignoreNonStrings ' => false ,
' cachePath ' => storage_path ( ' app/purifier ' ),
' cacheFileMode ' => 0755 ,
' settings ' => [
' default ' => [
' HTML.Doctype ' => ' HTML 4.01 Transitional ' ,
' HTML.Allowed ' => ' div,b,strong,i,em,u,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src] ' ,
' CSS.AllowedProperties ' => ' font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align ' ,
' AutoFormat.AutoParagraph ' => true ,
' AutoFormat.RemoveEmpty ' => true ,
],
' test ' => [
' Attr.EnableID ' => ' true ' ,
],
" youtube " => [
" HTML.SafeIframe " => ' true ' ,
" URI.SafeIframeRegexp " => " %^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)% " ,
],
' custom_definition ' => [
' id ' => ' html5-definitions ' ,
' rev ' => 1 ,
' debug ' => false ,
' elements ' => [
// http://developers.whatwg.org/sections.html
[ ' section ' , ' Block ' , ' Flow ' , ' Common ' ],
[ ' nav ' , ' Block ' , ' Flow ' , ' Common ' ],
[ ' article ' , ' Block ' , ' Flow ' , ' Common ' ],
[ ' aside ' , ' Block ' , ' Flow ' , ' Common ' ],
[ ' header ' , ' Block ' , ' Flow ' , ' Common ' ],
[ ' footer ' , ' Block ' , ' Flow ' , ' Common ' ],
// Content model actually excludes several tags, not modelled here
[ ' address ' , ' Block ' , ' Flow ' , ' Common ' ],
[ ' hgroup ' , ' Block ' , ' Required: h1 | h2 | h3 | h4 | h5 | h6 ' , ' Common ' ],
// http://developers.whatwg.org/grouping-content.html
[ ' figure ' , ' Block ' , ' Optional: (figcaption, Flow) | (Flow, figcaption) | Flow ' , ' Common ' ],
[ ' figcaption ' , ' Inline ' , ' Flow ' , ' Common ' ],
// http://developers.whatwg.org/the-video-element.html#the-video-element
[ ' video ' , ' Block ' , ' Optional: (source, Flow) | (Flow, source) | Flow ' , ' Common ' , [
' src ' => ' URI ' ,
' type ' => ' Text ' ,
' width ' => ' Length ' ,
' height ' => ' Length ' ,
' poster ' => ' URI ' ,
' preload ' => ' Enum#auto,metadata,none ' ,
' controls ' => ' Bool ' ,
]],
[ ' source ' , ' Block ' , ' Flow ' , ' Common ' , [
' src ' => ' URI ' ,
' type ' => ' Text ' ,
]],
// http://developers.whatwg.org/text-level-semantics.html
[ ' s ' , ' Inline ' , ' Inline ' , ' Common ' ],
[ ' var ' , ' Inline ' , ' Inline ' , ' Common ' ],
[ ' sub ' , ' Inline ' , ' Inline ' , ' Common ' ],
[ ' sup ' , ' Inline ' , ' Inline ' , ' Common ' ],
[ ' mark ' , ' Inline ' , ' Inline ' , ' Common ' ],
[ ' wbr ' , ' Inline ' , ' Empty ' , ' Core ' ],
// http://developers.whatwg.org/edits.html
[ ' ins ' , ' Block ' , ' Flow ' , ' Common ' , [ ' cite ' => ' URI ' , ' datetime ' => ' CDATA ' ]],
[ ' del ' , ' Block ' , ' Flow ' , ' Common ' , [ ' cite ' => ' URI ' , ' datetime ' => ' CDATA ' ]],
],
' attributes ' => [
[ ' iframe ' , ' allowfullscreen ' , ' Bool ' ],
[ ' table ' , ' height ' , ' Text ' ],
[ ' td ' , ' border ' , ' Text ' ],
[ ' th ' , ' border ' , ' Text ' ],
[ ' tr ' , ' width ' , ' Text ' ],
[ ' tr ' , ' height ' , ' Text ' ],
[ ' tr ' , ' border ' , ' Text ' ],
],
],
' custom_attributes ' => [
[ ' a ' , ' target ' , ' Enum#_blank,_self,_target,_top ' ],
],
' custom_elements ' => [
[ ' u ' , ' Inline ' , ' Inline ' , ' Common ' ],
],
],
];
Consulte a guia de lançamentos do Github para obter mais informações sobre o que mudou recentemente.
Se você descobrir algum problema relacionado à segurança, envie um e-mail ao autor em vez de usar o rastreador de problemas.
MIT. Consulte o arquivo de licença para obter mais informações.