ผู้ให้บริการ Laravel ที่เรียบง่ายสำหรับการใช้ HTMLPurifier ภายใน Laravel ได้อย่างง่ายดาย จากเว็บไซต์ของพวกเขา:
HTML Purifier เป็นไลบรารีตัวกรอง HTML ที่ได้มาตรฐานซึ่งเขียนด้วย PHP HTML Purifier ไม่เพียงแต่จะลบโค้ดที่เป็นอันตรายทั้งหมด (รู้จักกันดีในชื่อ XSS) ด้วยรายการไวท์ลิสต์ที่ได้รับการตรวจสอบอย่างละเอียด ปลอดภัย แต่อนุญาตเท่านั้น แต่ยังช่วยให้แน่ใจว่าเอกสารของคุณเป็นไปตามมาตรฐาน ซึ่งเป็นสิ่งที่สามารถทำได้โดยอาศัยความรู้ที่ครอบคลุมเกี่ยวกับข้อกำหนดของ W3C เท่านั้น เบื่อกับการใช้ BBCode เนื่องจากตัวกรอง HTML ไม่เพียงพอหรือไม่ปลอดภัยในปัจจุบันใช่ไหม มีโปรแกรมแก้ไขแบบ WYSIWYG แต่ไม่สามารถใช้งานได้เลยใช่ไหม กำลังมองหาส่วนประกอบโอเพ่นซอร์สคุณภาพสูง ตรงตามมาตรฐาน สำหรับแอปพลิเคชันที่คุณกำลังสร้างอยู่ใช่ไหม HTML Purification เหมาะสำหรับคุณ!
ต้องการแพ็คเกจนี้พร้อมผู้แต่ง:
composer require mews/purifier
ผู้ให้บริการจะถูกค้นพบโดยอัตโนมัติ คุณไม่จำเป็นต้องเพิ่มผู้ให้บริการที่ใดก็ได้
ต้องการแพ็คเกจนี้พร้อมผู้แต่ง:
composer require mews/purifier
ค้นหาคีย์ providers
ใน config/app.php
และลงทะเบียนผู้ให้บริการ HTMLPurifier
' providers ' => [
// ...
Mews Purifier PurifierServiceProvider::class,
]
ค้นหาคีย์ aliases
ใน config/app.php
และลงทะเบียนนามแฝง Purifier
' aliases ' => [
// ...
' Purifier ' => Mews Purifier Facades Purifier::class,
]
ตรวจสอบ HTMLPurifier สำหรับ Laravel 4
ใช้วิธีการเหล่านี้ภายในคำขอหรือมิดเดิลแวร์ของคุณ ทุกที่ที่คุณต้องการล้าง HTML:
clean (Input:: get ( ' inputname ' ));
หรือ
Purifier:: clean (Input:: get ( ' inputname ' ));
การกำหนดค่าแบบไดนามิก
clean ( ' This is my H1 title ' , ' titles ' );
clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
หรือ
Purifier:: clean ( ' This is my H1 title ' , ' titles ' );
Purifier:: clean ( ' This is my H1 title ' , array ( ' Attr.EnableID ' => true ));
ใช้ตัวกรอง URI
Purifier:: clean ( ' This is my H1 title ' , ' titles ' , function ( HTMLPurifier_Config $ config ) {
$ uri = $ config -> getDefinition ( ' URI ' );
$ uri -> addFilter ( new HTMLPurifier_URIFilter_NameOfFilter (), $ config );
});
อีกทางหนึ่ง ใน Laravel 7+ หากคุณต้องการล้าง HTML ของคุณภายในโมเดล Eloquent คุณสามารถใช้ Cast แบบกำหนดเองของเราได้:
<?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
];
}
หากต้องการใช้การตั้งค่าของคุณเอง ให้เผยแพร่การกำหนดค่า
php artisan vendor:publish --provider="MewsPurifierPurifierServiceProvider"
ไฟล์กำหนดค่า config/purifier.php
ควรเป็นเช่นนี้
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 ' ],
],
],
];
โปรดดูแท็บการเผยแพร่ Github สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เปลี่ยนแปลงเมื่อเร็วๆ นี้
หากคุณพบปัญหาที่เกี่ยวข้องกับความปลอดภัย โปรดส่งอีเมลถึงผู้เขียนแทนการใช้ตัวติดตามปัญหา
เอ็มไอที. โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม