Module: Dandruff
- Defined in:
- lib/dandruff.rb,
lib/dandruff/tags.rb,
lib/dandruff/utils.rb,
lib/dandruff/config.rb,
lib/dandruff/version.rb,
lib/dandruff/attributes.rb,
lib/dandruff/expressions.rb
Overview
Dandruff - A robust HTML sanitizer for Ruby
Dandruff is a Ruby implementation inspired by DOMPurify, providing comprehensive XSS protection by sanitizing HTML strings and removing malicious payloads. It's designed for excellent developer experience while maintaining battle-tested security.
Key Features
- Comprehensive XSS Protection: Defends against XSS, mXSS, DOM clobbering, and protocol injection
- Flexible Configuration: Fine-grained control over tags, attributes, and sanitization behavior
- Content Type Profiles: Pre-configured settings for HTML, SVG, MathML, and HTML email
- Hook System: Extend sanitization with custom processing logic
- Developer-Friendly API: Intuitive Ruby idioms with block-based configuration
- Battle-Tested Security: Based on DOMPurify's proven security model
- Performance Optimized: Efficient multi-pass sanitization with configurable limits
Quick Start
Security
Dandruff protects against multiple attack vectors:
- XSS: Removes script tags, event handlers, javascript: URIs
- mXSS: Multi-pass sanitization prevents mutation-based attacks
- DOM Clobbering: Blocks dangerous id/name attribute values
- Protocol Injection: Validates URI protocols (javascript:, vbscript:, data:text/html)
- Namespace Confusion: Prevents mXSS via SVG/MathML namespace attacks
- CSS Injection: Sanitizes inline styles and style tag content
Defined Under Namespace
Modules: Attributes, Expressions, Tags, Utils Classes: Config, Error, Sanitizer
Constant Summary collapse
- VERSION =
'0.8.1'
Class Method Summary collapse
-
.new(cfg = {}) {|config| ... } ⇒ Sanitizer
Builds a new sanitizer instance with optional configuration.
-
.sanitize(dirty, cfg = {}) ⇒ String, Nokogiri::XML::Document
(also: scrub)
Convenience helper to sanitize with a fresh, default-configured instance.
Class Method Details
.new(cfg = {}) {|config| ... } ⇒ Sanitizer
Builds a new sanitizer instance with optional configuration
1089 1090 1091 |
# File 'lib/dandruff.rb', line 1089 def self.new(cfg = {}, &block) Sanitizer.new(cfg, &block) end |
.sanitize(dirty, cfg = {}) ⇒ String, Nokogiri::XML::Document Also known as: scrub
Convenience helper to sanitize with a fresh, default-configured instance.
1098 1099 1100 |
# File 'lib/dandruff.rb', line 1098 def self.sanitize(dirty, cfg = {}) new(cfg).sanitize(dirty) end |