Sha256: 5fcce993429af67da9b09562b35f1e9ec47e1838681a48136ee05d5775bb8e49
Contents?: true
Size: 1.52 KB
Versions: 1
Compression:
Stored size: 1.52 KB
Contents
require 'html5' require 'html5lib_sanitize' # == Introduction # # Inquisition will escape html included in specified attributes to # eliminate xss-style attacks. module Inquisition def self.included(klass) klass.extend(ClassMethods) end module ClassMethods def cleanse_attr(*attributes) cleanse_attr_reader(*attributes) cleanse_attr_writer(*attributes) end def cleanse_attr_reader(*attributes) write_inheritable_attribute(:cleansed_attr_readers, attributes) class_inheritable_reader(:cleansed_attr_readers) define_method(:read_attribute_with_cleansing) do |attribute| if cleansed_attr_readers.include?(attribute.to_sym) HTML5libSanitize.sanitize_html(read_attribute_without_cleansing(attribute)) else read_attribute_without_cleansing(attribute) end end alias_method_chain :read_attribute, :cleansing end def cleanse_attr_writer(*attributes) write_inheritable_attribute(:cleansed_attr_writers, attributes) class_inheritable_reader(:cleansed_attr_writers) define_method(:write_attribute_with_cleansing) do |attribute, value| if cleansed_attr_writers.include?(attribute.to_sym) write_attribute_without_cleansing(attribute, HTML5libSanitize.sanitize_html(value)) else write_attribute_without_cleansing(attribute, value) end end alias_method_chain :write_attribute, :cleansing end end #Class Methods end #Inquisition class Object include Inquisition end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
thumblemonks-inquisition-0.1.1 | lib/inquisition.rb |