Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
bluemonday — bluemonday: एक तेज़ golang HTML sanitizer (OWASP Java HTML Sanitizer से प्रेरित) जो उपयोगकर्ता द्वारा उत्पन्न सामग्री को XSS से साफ़ करता है | Kitploit
उपकरण/GitHubGitHub/microcosm-cc/bluemonday
रक्षात्मक उपकरणस्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणवेब सुरक्षाAPI सुरक्षा
GitHubmicrocosm-cc/bluemonday

bluemonday

bluemonday: एक तेज़ golang HTML sanitizer (OWASP Java HTML Sanitizer से प्रेरित) जो उपयोगकर्ता द्वारा उत्पन्न सामग्री को XSS से साफ़ करता है

रिपॉजिटरी देखें
3.7k195221 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

bluemonday GoDoc Sourcegraph

bluemonday Go में कार्यान्वित एक HTML सैनिटाइज़र है। यह तेज़ और अत्यधिक कॉन्फ़िगरेबल है।

bluemonday अविश्वसनीय उपयोगकर्ता द्वारा उत्पन्न सामग्री को इनपुट के रूप में लेता है, और अनुमोदित HTML तत्वों और विशेषताओं की एक अनुमति सूची के विरुद्ध स्वच्छ किए गए HTML को लौटाता है ताकि आप सुरक्षित रूप से अपने वेब पेज में सामग्री शामिल कर सकें।

यदि आप उपयोगकर्ता द्वारा उत्पन्न सामग्री स्वीकार करते हैं, और आपका सर्वर Go का उपयोग करता है, तो आपको bluemonday की आवश्यकता है।

उपयोगकर्ता द्वारा उत्पन्न सामग्री के लिए डिफ़ॉल्ट नीति (bluemonday.UGCPolicy().Sanitize()) इसे बदल देती है:

Hello <STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>World

एक हानिरहित में:

Hello World

और यह इसे बदल देता है:

<a href="javascript:alert('XSS1')" onmouseover="alert('XSS2')">XSS<a>

इसमें:

XSS

जबकि अभी भी इसकी अनुमति देता है:

<a href="http://www.google.com/">
  <img src="https://ssl.gstatic.com/accounts/ui/logo_2x.png"/>
</a>

ज्यादातर अपरिवर्तित गुज़रने के लिए (इसे एक rel="nofollow" मिला जो उपयोगकर्ता द्वारा उत्पन्न सामग्री के लिए एक अच्छी बात है):

<a href="http://www.google.com/" rel="nofollow">
  <img src="https://ssl.gstatic.com/accounts/ui/logo_2x.png"/>
</a>

यह साइटों को XSS हमलों से बचाता है। XSS हमले के लिए कई वैक्टर हैं और जोखिम को कम करने का सबसे अच्छा तरीका उपयोगकर्ता इनपुट को HTML तत्वों और विशेषताओं की ज्ञात सुरक्षित सूची के विरुद्ध स्वच्छ करना है।

आपको हमेशा किसी अन्य प्रसंस्करण के बाद bluemonday चलाना चाहिए।

यदि आप blackfriday या Pandoc का उपयोग करते हैं तो bluemonday को इन चरणों के बाद चलाया जाना चाहिए। यह सुनिश्चित करता है कि आपकी प्रक्रिया में बाद में कोई असुरक्षित HTML शामिल नहीं किया गया है।

bluemonday OWASP Java HTML Sanitizer और HTML Purifier दोनों से काफी प्रेरित है।

तकनीकी सारांश

अनुमति सूची पर आधारित, आपको या तो अनुमति देने के लिए HTML तत्वों और विशेषताओं (और विशेषताओं के regexp पैटर्न) का वर्णन करने वाली एक नीति बनाने की आवश्यकता है, या अच्छे डिफ़ॉल्ट का प्रतिनिधित्व करने वाली प्रदान की गई नीतियों में से एक का उपयोग करें।

अनुमति सूची वाली नीति को मुख्य Go टीम द्वारा Go net/html लाइब्रेरी में कार्यान्वित एक तेज़ गैर-मान्यकरण, केवल आगे-बढ़ने वाले, टोकन-आधारित पार्सर का उपयोग करके लागू किया जाता है।

हम उम्मीद करते हैं कि हमें अच्छी तरह से स्वरूपित HTML (प्रत्येक लागू खुले तत्व के लिए बंद करने वाले तत्व, सही ढंग से नेस्टेड) प्रदान किया जाएगा और इसलिए हम खराब नेस्टेड या अपूर्ण HTML की मरम्मत पर ध्यान केंद्रित नहीं करते हैं। हम केवल यह सुनिश्चित करने पर ध्यान केंद्रित करते हैं कि जो भी तत्व मौजूद हैं वे नीति अनुमति सूची में वर्णित हैं और विशेषताएँ और लिंक आपके वेब पेज पर उपयोग के लिए सुरक्षित हैं। GIGO लागू होता है और यदि आप इसे खराब HTML खिलाते हैं तो bluemonday इसे फिर से अच्छा बनाने के तरीके का पता लगाने का काम नहीं करता है।

क्या यह उत्पादन के लिए तैयार है?

हाँ

हम व्यापक रूप से उपयोग किए जाने वाले और भारी क्षेत्र-परीक्षण किए गए OWASP Java HTML Sanitizer से स्थानांतरित होकर उत्पादन में bluemonday का उपयोग कर रहे हैं।

हम अपने व्यापक परीक्षण सूट (AntiSamy परीक्षणों के साथ-साथ उठाए गए किसी भी मुद्दे के परीक्षण सहित) को पास कर रहे हैं। किसी भी अनसुलझे मुद्दे की जाँच करें कि क्या आपके लिए कुछ बाधा हो सकती है।

हम पुल रिक्वेस्ट और मुद्दों को आमंत्रित करते हैं ताकि हमें यह सुनिश्चित करने में मदद मिल सके कि हम उपयोगकर्ता द्वारा उत्पन्न सामग्री के माध्यम से विभिन्न हमलों के खिलाफ व्यापक सुरक्षा प्रदान कर रहे हैं।

उपयोग

go get github.com/microcosm-cc/bluemonday का उपयोग करके इंस्टॉल करें

फिर इसे कॉल करें:

package main

import (
	"fmt"

	"github.com/microcosm-cc/bluemonday"
)

func main() {
	// Do this once for each unique policy, and use the policy for the life of the program
	// Policy creation/editing is not safe to use in multiple goroutines
	p := bluemonday.UGCPolicy()

	// The policy can then be used to sanitize lots of input and it is safe to use the policy in multiple goroutines
	html := p.Sanitize(
		`<a onblur="alert(secret)" href="http://www.google.com">Google</a>`,
	)

	// Output:
	// <a href="http://www.google.com" rel="nofollow">Google</a>
	fmt.Println(html)
}

हम Sanitize को कॉल करने के तीन तरीके प्रदान करते हैं:

p.Sanitize(string) string
p.SanitizeBytes([]byte) []byte
p.SanitizeReader(io.Reader) bytes.Buffer

यदि आप प्रदर्शन के बारे में जुनूनी हैं, तो p.SanitizeReader(r).Bytes() इनपुट या आउटपुट के किसी भी अनावश्यक कास्टिंग के बिना एक []byte लौटाएगा। हालांकि अंतर इतना नगण्य है कि आपको कभी चिंता करने की आवश्यकता नहीं है।

आप अपनी स्वयं की नीतियां बना सकते हैं:

package main

import (
	"fmt"

	"github.com/microcosm-cc/bluemonday"
)

func main() {
	p := bluemonday.NewPolicy()

	// Require URLs to be parseable by net/url.Parse and either:
	//   mailto: http:// or https://
	p.AllowStandardURLs()

	// We only allow <p> and <a href="">
	p.AllowAttrs("href").OnElements("a")
	p.AllowElements("p")

	html := p.Sanitize(
		`<a onblur="alert(secret)" href="http://www.google.com">Google</a>`,
	)

	// Output:
	// <a href="http://www.google.com">Google</a>
	fmt.Println(html)
}

हम दो डिफ़ॉल्ट नीतियां भेजते हैं:

  1. bluemonday.StrictPolicy() जिसे सभी HTML तत्वों और उनकी विशेषताओं को हटाने के समतुल्य माना जा सकता है क्योंकि इसकी अनुमति सूची में कुछ भी नहीं है। उपयोग का एक उदाहरण परिदृश्य ब्लॉग पोस्ट शीर्षक होंगे जहां HTML टैग की बिल्कुल भी उम्मीद नहीं की जाती है और यदि वे हैं तो तत्वों और तत्वों की सामग्री को हटा दिया जाना चाहिए। यह एक बहुत सख्त नीति है।

  2. bluemonday.UGCPolicy() जो उपयोगकर्ता द्वारा उत्पन्न सामग्री के लिए सुरक्षित HTML तत्वों और विशेषताओं का एक व्यापक चयन की अनुमति देता है। ध्यान दें कि यह नीति iframes, object, embed, styles, script, आदि की अनुमति नहीं देती है। उपयोग का एक उदाहरण परिदृश्य ब्लॉग पोस्ट बॉडी होंगे जहां विभिन्न प्रकार के फ़ॉर्मेटिंग की अपेक्षा की जाती है और TABLEs और IMGs की संभावना भी होती है।

नीति निर्माण

नीति बनाने का सार यह निर्धारित करना है कि आपके परिदृश्य के लिए कौन से HTML तत्व और विशेषताएं सुरक्षित मानी जाती हैं। OWASP जोखिमों को समझाने में मदद करने के लिए एक XSS रोकथाम चीट शीट प्रदान करता है, लेकिन मूल रूप से:

  1. मानक HTML तत्वों के अलावा कुछ भी न करें
  2. script, style, iframe, object, embed, base तत्वों से बचें जो क्लाइंट द्वारा कोड निष्पादित करने या तीसरे पक्ष की सामग्री शामिल करने की अनुमति देते हैं जो कोड निष्पादित कर सकती है
  3. regexp से मेल खाने वाले मानों के साथ सादे HTML विशेषताओं के अलावा कुछ भी न करें

मूल रूप से, आपको यह वर्णन करने में सक्षम होना चाहिए कि आपके परिदृश्य के लिए कौन सा HTML ठीक है। यदि आपको विश्वास नहीं है कि आप अपनी नीति का वर्णन कर सकते हैं तो कृपया bluemonday.UGCPolicy() जैसी शिप की गई नीतियों में से एक का उपयोग करने पर विचार करें।

एक नई नीति बनाने के लिए:

p := bluemonday.NewPolicy()

To add elements to a policy either add just the elements:

p.AllowElements("b", "strong")

Or using a regex:

नोट: यदि कोई तत्व ऊपर दिखाए अनुसार नाम से जोड़ा जाता है, तो कोई भी मैच करने वाला regex अनदेखा कर दिया जाएगा

यह भी अनुशंसा की जाती है कि सुनिश्चित करें कि कई पैटर्न ओवरलैप न हों क्योंकि निष्पादन के क्रम की गारंटी नहीं है और इसके परिणामस्वरूप कुछ नियम छूट सकते हैं।

p.AllowElementsMatching(regex.MustCompile(`^my-element-`))
टूल डाउनलोड करें