Penyedia layanan Laravel sederhana untuk menggunakan HTMLPurifier di dalam Laravel dengan mudah. Dari situs web mereka:
HTML Purifier adalah pustaka filter HTML yang memenuhi standar yang ditulis dalam PHP. HTML Purifier tidak hanya akan menghapus semua kode berbahaya (lebih dikenal sebagai XSS) dengan daftar putih yang telah diaudit secara menyeluruh, aman namun permisif, tetapi juga akan memastikan dokumen Anda memenuhi standar, sesuatu yang hanya dapat dicapai dengan pengetahuan komprehensif tentang spesifikasi W3C. Bosan menggunakan BBCode karena kondisi filter HTML yang kurang atau tidak aman saat ini? Punya editor WYSIWYG tetapi tidak pernah bisa menggunakannya? Mencari komponen sumber terbuka berkualitas tinggi, sesuai standar, untuk aplikasi yang Anda buat? Pembersih HTML cocok untuk Anda!
Memerlukan paket ini dengan komposer:
composer require mews/purifier
Penyedia layanan akan ditemukan secara otomatis. Anda tidak perlu menambahkan penyedia di mana pun.
Memerlukan paket ini dengan komposer:
composer require mews/purifier
Temukan kunci providers
di config/app.php
dan daftarkan Penyedia Layanan HTMLPurifier.
' providers ' => [
// ...
Mews Purifier PurifierServiceProvider::class,
]
Temukan kunci aliases
di config/app.php
dan daftarkan alias Purifier.
' aliases ' => [
// ...
' Purifier ' => Mews Purifier Facades Purifier::class,
]
Lihat HTMLPurifier untuk Laravel 4
Gunakan metode ini di dalam permintaan atau middleware Anda, di mana pun Anda memerlukan pembersihan HTML:
clean (Input:: get ( ' inputname ' ));
atau
Purifier:: clean (Input:: get ( ' inputname ' ));
konfigurasi dinamis
clean ( ' This is my H1 title ' , ' titles ' );
clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
atau
Purifier:: clean ( ' This is my H1 title ' , ' titles ' );
Purifier:: clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
gunakan filter URI
Purifier:: clean ( ' This is my H1 title ' , ' titles ' , function ( HTMLPurifier_Config $ config ) {
$ uri = $ config -> getDefinition ( ' URI ' );
$ uri -> addFilter ( new HTMLPurifier_URIFilter_NameOfFilter (), $ config );
});
Alternatifnya, di Laravel 7+, jika Anda ingin membersihkan HTML di dalam model Eloquent Anda, Anda dapat menggunakan cast kustom kami:
<?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
];
}
Untuk menggunakan pengaturan Anda sendiri, publikasikan config.
php artisan vendor:publish --provider="MewsPurifierPurifierServiceProvider"
File konfigurasi config/purifier.php
seharusnya seperti ini
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 ' ],
],
],
];
Silakan lihat Tab Rilis Github untuk informasi lebih lanjut tentang apa yang berubah baru-baru ini.
Jika Anda menemukan masalah terkait keamanan apa pun, silakan kirim email ke penulisnya alih-alih menggunakan pelacak masalah.
MIT. Silakan lihat file lisensi untuk informasi lebih lanjut.