الأمونيا هي مكتبة تعقيم HTML قائمة على القائمة البيضاء. إنه مصمم لمنع البرمجة النصية عبر المواقع ، وكسر التخطيط ، ونقرات النقرات التي تسببها HTML غير الموثوق بها للمستخدم في صفحة ويب أكبر.
تستخدم الأمونيا html5ever لتحليل وتسلسل شظايا المستندات بنفس الطريقة التي تفعل بها المتصفحات ، لذلك من المرونة للغاية التغلب النحوي.
الأمونيا تخيل مدخلاتها بالضبط وفقًا لمواصفات HTML5 ؛ لن يربط عناوين URL العارية ، أو إدراج خط أو فواصل الفقرة ، أو تحويل (C) إلى ©. إذا كنت تريد ذلك ، فاستخدم معالج الترميز قبل تشغيل معرض المطهر ، مثل علامة السحب.
لاستخدام ammonia ، أضفه إلى ملف Cargo.toml الخاص بمشروعك:
[ dependencies ]
ammonia = " 4 " يرجى الاطلاع على Changelog لتاريخ الإصدار.
باستخدام علامة السحب مع الأمونيا لموقع تعليق ودود.
use ammonia :: clean ;
use pulldown_cmark :: { Parser , Options , html :: push_html } ;
let text = "[a link](http://www.notriddle.com/)" ;
let mut options = Options :: empty ( ) ;
options . insert ( Options :: ENABLE_TABLES ) ;
let mut md_parse = Parser :: new_ext ( text , options ) ;
let mut unsafe_html = String :: new ( ) ;
push_html ( & mut unsafe_html , md_parse ) ;
let safe_html = clean ( & * unsafe_html ) ;
assert_eq ! ( safe_html , "<a href= " http://www.notriddle.com/ " >a link</a>" ) ; تقوم الأمونيا ببناء DOM ، وتجاوزها (استبدال العقد غير المرغوب فيها على طول الطريق) ، ويقوم بتسلسلها مرة أخرى. قد يكون الأمر أسرع لما يفعله ، وإذا كنت لا ترغب في السماح لأي HTML ، فمن الممكن أن تكون أسرع من ذلك.
ومع ذلك ، فإن الأمر يستغرق حوالي خمسة عشر مرة لتطهير سلسلة HTML باستخدام Bleach-2.0.0 مع HTML5LIB-0.9999999999 مما هو عليه باستخدام الأمونيا 1.0.
$ cd benchmarks
$ cargo run --release
Running `target/release/ammonia_bench`
87539 nanoseconds to clean up the intro to the Ammonia docs.
$ python bleach_bench.py
(1498800.015449524, 'nanoseconds to clean up the intro to the Ammonia docs.')
مرخصة تحت أي من هذين:
بفضل مكتبات المطهر الأخرى ، وخاصة التبييض للبيثون وتطهير HTML للعقدة ، والتي قمنا بنسخها بشكل صارخ معظم واجهة برمجة التطبيقات الخاصة بنا.
بفضل Chalker ، الذي ساعدتنا وثيقة التعقيم غير السليمة التي ساعدتنا في العثور على ثقوب دلالية رفيعة المستوى في الأمونيا ، إلى Ssokolow ، التي كانت مراجعتها وتجربتها مفيدة للغاية ، إلى SecurityMB ، لإيجاد حشرة الحقن المرتبطة بمساحة الاسم ، و XFIX لإيجاد خطأ في حالة من الخدم المتكرر.
وأخيرا ، بفضل المساهمين.