# frozen_string_literal: true module Loofah module Helpers class << self # # A replacement for Rails's built-in +strip_tags+ helper. # # Loofah::Helpers.strip_tags("
Hello there
") # => "Hello there" # def strip_tags(string_or_io) Loofah.html4_fragment(string_or_io).text end # # A replacement for Rails's built-in +sanitize+ helper. # # Loofah::Helpers.sanitize("") # # => "<script src=\"http://ha.ckers.org/xss.js\"></script>" # def sanitize(string_or_io) loofah_fragment = Loofah.html4_fragment(string_or_io) loofah_fragment.scrub!(:strip) loofah_fragment.xpath("./form").each(&:remove) loofah_fragment.to_s end # # A replacement for Rails's built-in +sanitize_css+ helper. # # Loofah::Helpers.sanitize_css("display:block;background-image:url(http://example.com/foo.jpg)") # # => "display: block;" # def sanitize_css(style_string) ::Loofah::HTML5::Scrub.scrub_css(style_string) end # # A helper to remove extraneous whitespace from text-ified HTML. # # TODO: remove this in a future major-point-release. # def remove_extraneous_whitespace(string) Loofah.remove_extraneous_whitespace(string) end end module ActionView module ClassMethods # :nodoc: def full_sanitizer @full_sanitizer ||= ::Loofah::Helpers::ActionView::FullSanitizer.new end def safe_list_sanitizer @safe_list_sanitizer ||= ::Loofah::Helpers::ActionView::SafeListSanitizer.new end def white_list_sanitizer warn("warning: white_list_sanitizer is deprecated, please use safe_list_sanitizer instead.") safe_list_sanitizer end end # # Replacement class for Rails's HTML::FullSanitizer. # # To use by default, call this in an application initializer: # # ActionView::Helpers::SanitizeHelper.full_sanitizer = \ # Loofah::Helpers::ActionView::FullSanitizer.new # # Or, to generally opt-in to Loofah's view sanitizers: # # Loofah::Helpers::ActionView.set_as_default_sanitizer # class FullSanitizer def sanitize(html, *args) Loofah::Helpers.strip_tags(html) end end # # Replacement class for Rails's HTML::WhiteListSanitizer. # # To use by default, call this in an application initializer: # # ActionView::Helpers::SanitizeHelper.safe_list_sanitizer = \ # Loofah::Helpers::ActionView::SafeListSanitizer.new # # Or, to generally opt-in to Loofah's view sanitizers: # # Loofah::Helpers::ActionView.set_as_default_sanitizer # class SafeListSanitizer def sanitize(html, *args) Loofah::Helpers.sanitize(html) end def sanitize_css(style_string, *args) Loofah::Helpers.sanitize_css(style_string) end end WhiteListSanitizer = SafeListSanitizer if Object.respond_to?(:deprecate_constant) deprecate_constant :WhiteListSanitizer end end end end