Sha256: 59a3d59a04f936efe5f5eb6a123f32e7ad6710e304e972dfb46e6e52b4292a1d
Contents?: true
Size: 1.58 KB
Versions: 2
Compression:
Stored size: 1.58 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| value = read_attribute_without_cleansing(attribute) if cleansed_attr_readers.include?(attribute.to_sym) && !value.blank? HTML5libSanitize.sanitize_html(value) else value end end alias_method_chain :read_attribute, :cleansing attributes.each { |attr| define_method(attr.to_sym) { read_attribute(attr.to_sym) } } 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) && !value.blank? value = HTML5libSanitize.sanitize_html(value) end write_attribute_without_cleansing(attribute, value) end alias_method_chain :write_attribute, :cleansing end end #Class Methods end #Inquisition class Object include Inquisition end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
thumblemonks-inquisition-0.1.3 | lib/inquisition.rb |
thumblemonks-inquisition-0.1.4 | lib/inquisition.rb |