Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
svg-sanitizer — مكتبة PHP تعقّم ملفات SVG/XML غير الموثوقة عبر تصفية الوسوم والسمات والمراجع البعيدة لمنع XSS وحقن النصوص البرمجية في ملفات SVG المرفوعة أو المضمّنة. | Kitploit
أدوات/GitHubGitHub/darylldoyle/svg-sanitizer
أدوات دفاعيةالتحليل الثابتتحليل الثغرات الأمنيةأمن الويبالأدوات والمكونات
GitHubdarylldoyle/svg-sanitizer

svg-sanitizer

مكتبة PHP تعقّم ملفات SVG/XML غير الموثوقة عبر تصفية الوسوم والسمات والمراجع البعيدة لمنع XSS وحقن النصوص البرمجية في ملفات SVG المرفوعة أو المضمّنة.

عرض المستودع
5526917منذ 8 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

svg-sanitizer

حالة البناء تغطية الكود

هذه محاولتي لبناء أداة تعقيم SVG جيدة بلغة PHP. العمل مستعار إلى حد كبير من DOMPurify.

التثبيت

إما أن تطلب enshrined/svg-sanitize عبر composer أو تنزّل المستودع وتضمّنه بالطريقة القديمة!

الاستخدام

استخدام هذه الأداة سهل للغاية. أنشئ نسخة جديدة من enshrined\svgSanitize\Sanitizer ثم استدعِ sanitize مع تمرير ملف SVG/XML غير النظيف الخاص بك

مثال أساسي

use enshrined\svgSanitize\Sanitizer;

// Create a new sanitizer instance
$sanitizer = new Sanitizer();

// Load the dirty svg
$dirtySVG = file_get_contents('filthy.svg');

// Pass it to the sanitizer and get it back clean
$cleanSVG = $sanitizer->sanitize($dirtySVG);

// Now do what you want with your clean SVG/XML data

المخرجات

سيؤدي هذا إما إلى إرجاع سلسلة SVG/XML مُنقّاة أو القيمة المنطقية false إذا فشل تحليل XML (عادةً بسبب ملف سيئ التنسيق).

كما يُرجع false للمدخلات التي لن يمررها إلى محلل XML:

  • عنصر يحتوي على أكثر من 4,096 سمة
  • DTD داخلي في مدخلات UTF-16 أو UTF-32
  • ترميز لا يكون ترميزه نص ASCII عاديًا، مثل EBCDIC أو UTF-7
  • جذر <svg> في مساحة أسماء غير SVG

يوضح getXmlIssues() السبب.

الخيارات

يمكنك تمرير قائمة السماح الخاصة بك من الوسوم والسمات باستخدام طريقتي Sanitizer::setAllowedTags وSanitizer::setAllowedAttrs على التوالي.

تتطلب هذه الطرق أن تنفّذ enshrined\svgSanitize\data\TagInterface أو enshrined\svgSanitize\data\AttributeInterface.

يُسمح بـ <use> افتراضيًا، مع حدود على مدى توسّع المراجع (useThreshold()) وتعشيشها (setUseNestingLimit()). إذا لم تكن بحاجة إليه، على سبيل المثال لأنك تُضمّن SVG غير موثوق مباشرةً في صفحاتك، فاترك use خارج قائمة السماح بالوسوم لإزالة هذا المجال بالكامل.

إزالة المراجع البعيدة

لديك خيار إزالة السمات التي تشير إلى ملفات بعيدة، وهذا سيمنع تسريبات HTTP لكنه سيضيف عبئًا إضافيًا على المنقّي.

القيمة الافتراضية هي false، اضبطها على true لإزالة المراجع.

$sanitizer->removeRemoteReferences(true);

عند التفعيل، تُزال أيضًا المراجع البعيدة من CSS داخل عناصر <style> ومن CSS في السمات (url()، و@import، وimage-set()، والسلاسل المقتبسة التي تبدأ بعنوان URL بعيد). تُزال سمات srcset بالكامل، لأنها تحتوي على قائمة من عناوين URL. هذه المعالجة لـ CSS هي بأفضل جهد ممكن: فهي ليست محلل CSS كاملًا. تعامل معها كدفاع متعدد الطبقات بدلًا من ضمان، واعزل CSS غير الموثوق عند النقطة التي يُضمَّن فيها SVG.

ملاحظة: إذا كان عنصر <style> أو سمة style يحتوي على مرجع بعيد تتم إزالته، فسيتم تطبيع (فك ترميز) أي تسلسلات هروب CSS في نفس الكتلة في المخرجات. هذا CSS متطابق دلاليًا لكنه سيعيد كتابة تسلسلات الهروب التي كتبها المؤلف يدويًا.

عرض مشكلات التنقية

يمكنك استخدام طريقة getXmlIssues() لإرجاع مصفوفة بالمشكلات التي حدثت أثناء التنقية.

قد يكون هذا مفيدًا للتسجيل أو لتقديم ملاحظات للمستخدم حول سبب رفض SVG.

$issues = $sanitizer->getXmlIssues();

تحتوي القائمة على ما يصل إلى 1,000 مشكلة. إذا كان هناك المزيد، فسيوضح الإدخال الأخير عدد المشكلات التي تم استبعادها.

التصغير

يمكنك تصغير مخرجات XML عن طريق استدعاء $sanitizer->minify(true);.

عرض توضيحي

يتوفر عرض توضيحي على: http://svg.enshrined.co.uk/

WordPress

لقد أصدرت للتو إضافة WordPress تحتوي على هذا الكود حتى تتمكن من تنقية تحميلاتك في WordPress. وهي متاحة من دليل إضافات WordPress: https://wordpress.org/plugins/safe-svg/

Drupal

أنشأ Michael Potter مشكورًا وحدة Drupal لهذه المكتبة وهي متاحة على: https://www.drupal.org/project/svg_sanitizer

TYPO3

تُستخدم مكتبة تنقية SVG هذه افتراضيًا في نواة TYPO3 الإصدار v9 والإصدارات اللاحقة. راجع إدخال سجل التغييرات المقابل لمزيد من التفاصيل.

الاختبارات

يمكنك تشغيلها بتنفيذ vendor/bin/phpunit من الدليل الأساسي لهذه الحزمة.

الفحص المستقل للملفات عبر CLI

بفضل عمل gudmdharalds أصبح هناك الآن ماسح مستقل يمكن استخدامه عبر CLI.

ستُخرَج أي أخطاء بصيغة JSON. راجع الـ PR للحصول على مثال.

استخدمه كما يلي: php svg-scanner.php ~/svgs/myfile.svg

المهام المتبقية

سيكون من الرائع إجراء اختبارات أكثر شمولًا لملفات SVGs/XML، وسأحاول إضافة هذه قريبًا. إذا كنت ترغب في القيام بذلك نيابةً عني، فالرجاء فعل ذلك وقدّم PR!

تنزيل الأداة