مزود خدمة Laravel بسيط لاستخدام HTMLPurifier داخل Laravel بسهولة. من موقعهم على الانترنت:
HTML Purifier عبارة عن مكتبة مرشحات HTML متوافقة مع المعايير ومكتوبة بلغة PHP. لن يقوم HTML Purifier فقط بإزالة جميع التعليمات البرمجية الضارة (المعروفة باسم XSS) من خلال قائمة بيضاء مدققة تمامًا وآمنة ولكن متساهلة، بل سيتأكد أيضًا من أن مستنداتك متوافقة مع المعايير، وهو أمر لا يمكن تحقيقه إلا من خلال المعرفة الشاملة بمواصفات W3C. هل سئمت من استخدام BBCode بسبب الوضع الحالي لمرشحات HTML الناقصة أو غير الآمنة؟ هل لديك محرر WYSIWYG ولكنك لم تتمكن من استخدامه مطلقًا؟ هل تبحث عن مكونات مفتوحة المصدر عالية الجودة ومتوافقة مع المعايير لهذا التطبيق الذي تقوم بإنشائه؟ تنقية HTML هو لك!
تتطلب هذه الحزمة مع الملحن:
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 الخاصة بك، فيمكنك استخدام قوالبنا المخصصة:
<?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
];
}
لاستخدام إعداداتك الخاصة، قم بنشر ملف config.
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 للحصول على مزيد من المعلومات حول ما تغير مؤخرًا.
إذا اكتشفت أي مشكلات متعلقة بالأمان، فيرجى إرسال بريد إلكتروني إلى المؤلف بدلاً من استخدام أداة تعقب المشكلات.
معهد ماساتشوستس للتكنولوجيا. يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.