Ein einfacher Laravel-Dienstanbieter zur einfachen Verwendung von HTMLPurifier in Laravel. Von ihrer Website:
HTML Purifier ist eine standardkonforme HTML-Filterbibliothek, die in PHP geschrieben ist. HTML Purifier entfernt nicht nur sämtlichen Schadcode (besser bekannt als XSS) mit einer gründlich geprüften, sicheren und dennoch freizügigen Whitelist, sondern stellt auch sicher, dass Ihre Dokumente den Standards entsprechen, was nur mit umfassenden Kenntnissen der W3C-Spezifikationen erreichbar ist. Haben Sie es satt, BBCode aufgrund der aktuellen Situation mangelhafter oder unsicherer HTML-Filter zu verwenden? Haben Sie einen WYSIWYG-Editor, konnten ihn aber noch nie verwenden? Suchen Sie nach hochwertigen, standardkonformen Open-Source-Komponenten für die Anwendung, die Sie erstellen? HTML Purifier ist genau das Richtige für Sie!
Benötigen Sie dieses Paket mit Composer:
composer require mews/purifier
Der Dienstanbieter wird automatisch erkannt. Sie müssen den Anbieter nirgendwo hinzufügen.
Benötigen Sie dieses Paket mit Composer:
composer require mews/purifier
Suchen Sie den providers
in config/app.php
und registrieren Sie den HTMLPurifier-Dienstanbieter.
' providers ' => [
// ...
Mews Purifier PurifierServiceProvider::class,
]
Suchen Sie den aliases
Schlüssel in config/app.php
und registrieren Sie den Purifier-Alias.
' aliases ' => [
// ...
' Purifier ' => Mews Purifier Facades Purifier::class,
]
Schauen Sie sich HTMLPurifier für Laravel 4 an
Verwenden Sie diese Methoden innerhalb Ihrer Anfragen oder Middleware, wo immer Sie den HTML-Code bereinigen müssen:
clean (Input:: get ( ' inputname ' ));
oder
Purifier:: clean (Input:: get ( ' inputname ' ));
dynamische Konfiguration
clean ( ' This is my H1 title ' , ' titles ' );
clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
oder
Purifier:: clean ( ' This is my H1 title ' , ' titles ' );
Purifier:: clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
Verwenden Sie den URI-Filter
Purifier:: clean ( ' This is my H1 title ' , ' titles ' , function ( HTMLPurifier_Config $ config ) {
$ uri = $ config -> getDefinition ( ' URI ' );
$ uri -> addFilter ( new HTMLPurifier_URIFilter_NameOfFilter (), $ config );
});
Wenn Sie in Laravel 7+ Ihren HTML-Code in Ihren Eloquent-Modellen bereinigen möchten, können Sie alternativ unsere benutzerdefinierten Umwandlungen verwenden:
<?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
];
}
Um Ihre eigenen Einstellungen zu verwenden, veröffentlichen Sie die Konfiguration.
php artisan vendor:publish --provider="MewsPurifierPurifierServiceProvider"
Die Konfigurationsdatei config/purifier.php
sollte so aussehen
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 ' ],
],
],
];
Weitere Informationen zu den jüngsten Änderungen finden Sie auf der Registerkarte „Github-Releases“.
Wenn Sie sicherheitsrelevante Probleme entdecken, senden Sie bitte eine E-Mail an den Autor, anstatt den Issue-Tracker zu verwenden.
MIT. Weitere Informationen finden Sie in der Lizenzdatei.