Ruby on Rails 5.2 - ActionView::Helpers::SanitizeHelper

मॉड्यूल ActionView :: सहायक :: SanitizeHelper




ruby

मॉड्यूल ActionView :: सहायक :: SanitizeHelper

SanitizeHelper मॉड्यूल अवांछित HTML तत्वों के स्क्रबिंग पाठ के लिए तरीकों का एक सेट प्रदान करता है। ये सहायक विधियां एक्शन व्यू का विस्तार करती हैं, जो उन्हें आपकी टेम्पलेट फ़ाइलों के भीतर कॉल करने योग्य बनाती हैं।

सार्वजनिक प्रवृत्ति के तरीके

sanitize (html, विकल्प = {}) स्रोत दिखाएं
# File actionview/lib/action_view/helpers/sanitize_helper.rb, line 82
def sanitize(html, options = {})
  self.class.white_list_sanitizer.sanitize(html, options).try(:html_safe)
end

HTML इनपुट को संजीवित करता है, सभी टैग और विशेषताओं को अलग करता है जो कि श्वेत नहीं होते हैं।

यह javascript: जैसे असुरक्षित प्रोटोकॉल के साथ href / src विशेषताओं को भी स्ट्रिप्स करता है javascript: इन प्रोटोकॉल फिल्टर के आसपास काम करने के लिए यूनिकोड, ASCII और हेक्स चरित्र संदर्भों का उपयोग करने के प्रयासों के खिलाफ भी रक्षा करता है। सभी विशेष पात्र बच जाएंगे।

डिफ़ॉल्ट सैनिटाइज़र रेल्स :: Html :: WhiteListSanitizer है। अधिक जानकारी के लिए रेल HTML सिटिटाइज़र देखें।

कस्टम सैनिटाइजेशन नियम भी प्रदान किए जा सकते हैं।

कृपया ध्यान दें कि उपयोगकर्ता द्वारा प्रदान किए गए पाठ की स्वच्छता यह गारंटी नहीं देती है कि परिणामी मार्कअप मान्य है या यहां तक ​​कि अच्छी तरह से गठित है।

विकल्प

  • :tags - अनुमत टैग की एक सरणी।

  • :attributes - अनुमत विशेषताओं की एक सरणी।

  • :scrubber - ए रेल्स: एचटीएमएल स्क्रबर या Loofah::Scrubber ऑब्जेक्ट जो कस्टम सैनिटाइजेशन नियमों को परिभाषित करता है। एक कस्टम स्क्रबर कस्टम टैग और विशेषताओं पर पूर्वता लेता है।

उदाहरण

सामान्य उपयोग:

<%= sanitize @comment.body %>

कस्टम श्वेतसूचीबद्ध टैग और विशेषताएँ प्रदान करना:

<%= sanitize @comment.body, tags: %w(strong em a), attributes: %w(href) %>

एक कस्टम रेल प्रदान करना :: Html रंडी:

class CommentScrubber < Rails::Html::PermitScrubber
  def initialize
    super
    self.tags = %w( form script comment blockquote )
    self.attributes = %w( style )
  end

  def skip_node?(node)
    node.text?
  end
end

<%= sanitize @comment.body, scrubber: CommentScrubber.new %>

रेल के बारे में डाक्यूमेंट्स के लिए रेल सेनेटाइज़र देखें :: Html स्क्रबर्स।

एक कस्टम लूफै़ण प्रदान करना :: रंडी:

scrubber = Loofah::Scrubber.new do |node|
  node.remove if node.name == 'script'
end

<%= sanitize @comment.body, scrubber: scrubber %>

कस्टम लोफाह :: स्क्रबर ऑब्जेक्ट्स को परिभाषित करने के बारे में अधिक जानकारी के लिए Loofah::Scrubber देखें।

आपके आवेदन में डिफ़ॉल्ट अनुमत टैग या विशेषताओं को सेट करने के लिए:

# In config/application.rb
config.action_view.sanitized_allowed_tags = ['strong', 'em', 'a']
config.action_view.sanitized_allowed_attributes = ['href', 'title']
sanitize_css (शैली) दिखाएँ स्रोत
# File actionview/lib/action_view/helpers/sanitize_helper.rb, line 87
def sanitize_css(style)
  self.class.white_list_sanitizer.sanitize_css(style)
end

CSS कोड के एक ब्लॉक को संचित करता है। जब यह एक शैली विशेषता के पार आता है, तो इसका उपयोग sanitize द्वारा किया जाता है।

html से सभी लिंक टैग स्ट्रिप्स बस लिंक पाठ छोड़ रहा है।

strip_links('<a href="http://www.rubyonrails.org">Ruby on Rails</a>')
# => Ruby on Rails

strip_links('Please e-mail me at <a href="mailto:[email protected]">[email protected]</a>.')
# => Please e-mail me at [email protected]

strip_links('Blog: <a href="http://www.myblog.com/" class="nav" target=\"_blank\">Visit</a>.')
# => Blog: Visit.

strip_links('<<a href="https://example.org">malformed & link</a>')
# => &lt;malformed &amp; link
स्ट्रिप_टैग्स (html) स्रोत दिखाएं
# File actionview/lib/action_view/helpers/sanitize_helper.rb, line 104
def strip_tags(html)
  self.class.full_sanitizer.sanitize(html)
end

HTML से सभी HTML टैग स्ट्रिप्स, जिसमें टिप्पणियाँ और विशेष वर्ण शामिल हैं।

strip_tags("Strip <i>these</i> tags!")
# => Strip these tags!

strip_tags("<b>Bold</b> no more!  <a href='more.html'>See more here</a>...")
# => Bold no more!  See more here...

strip_tags("<div id='top-bar'>Welcome to my website!</div>")
# => Welcome to my website!

strip_tags("> A quote from Smith & Wesson")
# => &gt; A quote from Smith &amp; Wesson