แอมโมเนียเป็นห้องสมุด HTML Sanitization มันถูกออกแบบมาเพื่อป้องกันการเขียนสคริปต์ข้ามไซต์การทำลายเค้าโครงและการคลิกแจ็คที่เกิดจาก HTML ที่ผู้ใช้ที่ไม่ได้รับความไว้วางใจถูกผสมลงในหน้าเว็บขนาดใหญ่
แอมโมเนียใช้ HTML5ever เพื่อแยกวิเคราะห์และจัดเรียงชิ้นส่วนเอกสารในลักษณะเดียวกับที่เบราว์เซอร์ทำดังนั้นจึงมีความยืดหยุ่นอย่างมากต่อการทำให้งงงวยเกี่ยวกับวากยสัมพันธ์
แอมโมเนียแยกวิเคราะห์ข้อมูลตามข้อกำหนด HTML5 มันจะไม่เชื่อมโยง URL เปลือย, แทรกเส้นหรือแบ่งย่อหน้าหรือแปลง (C) เป็น© หากคุณต้องการให้ใช้โปรเซสเซอร์มาร์กอัปก่อนที่จะใช้ยาฆ่าเชื้อเช่น Pulldown-Cark
หากต้องการใช้ ammonia ให้เพิ่มลงในไฟล์ Cargo.toml ของโครงการของคุณ:
[ dependencies ]
ammonia = " 4 " โปรดดู Changelog สำหรับประวัติการวางจำหน่าย
การใช้ pulldown-cmark ร่วมกับแอมโมเนียสำหรับเว็บไซต์ความคิดเห็นที่ผู้ใช้หันหน้าเข้าหาเป็นมิตร
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.999999999 กว่าที่ใช้แอมโมเนีย 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.')
ได้รับใบอนุญาตภายใต้สิ่งเหล่านี้:
ต้องขอบคุณไลบรารีสารฆ่าเชื้ออื่น ๆ โดยเฉพาะอย่างยิ่งสารฟอกขาวสำหรับ Python และ sanitize-html สำหรับโหนดซึ่งเราคัดลอก API ส่วนใหญ่ของเราอย่างโจ๋งครึ่ม
ต้องขอบคุณ Chalker ที่เอกสารการฆ่าเชื้อมาร์กอัปที่ไม่เหมาะสมช่วยให้เราพบหลุมความหมายระดับสูงในแอมโมเนียไปยัง Ssokolow ซึ่งการตรวจสอบและประสบการณ์ก็มีประโยชน์มากในการรักษาความปลอดภัย MB สำหรับการค้นหาข้อผิดพลาดในการฉีดยา
และในที่สุดต้องขอบคุณผู้มีส่วนร่วม