Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/spamscanner/url-regex-safe
सामान्य उपयोगिताएँस्थैतिक विश्लेषणभेद्यता विश्लेषणस्क्रिप्टिंग और स्वचालनवेब सुरक्षा
GitHubspamscanner/url-regex-safe

url-regex-safe

URL के लिए रेगुलर एक्सप्रेशन मिलान। url-regex का अनुरक्षित, सुरक्षित, और ब्राउज़र-अनुकूल संस्करण। Node.js सर्वर के लिए CVE-2020-7661 को हल करता है।

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

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
वेबसाइट

url-regex-safe

build status code style styled with prettier made with lass license npm downloads

URL के लिए रेगुलर एक्सप्रेशन मिलान। url-regex का अनुरक्षित, सुरक्षित और ब्राउज़र-अनुकूल संस्करण। Node.js सर्वरों के लिए CVE-2020-7661 का समाधान करता है। Node v14+ और ब्राउज़रों में कार्य करता है। इसे Spam Scanner और Forward Email के लिए अनुरक्षित किया जाता है।

विषय-सूची

  • भूमिका
  • स्थापना
  • उपयोग
    • Node
    • ब्राउज़र
  • विकल्प
  • url-regex से त्वरित सुझाव और प्रवासन
  • सीमाएँ
  • योगदानकर्ता
  • लाइसेंस

भूमिका

जब मैंने CVE-2020-7661 की खोज की और इसे सार्वजनिक रूप से प्रकट किया (Spam Scanner और Forward Email पर अपने कार्य के माध्यम से) – मैंने खराब URL मैचों को फ़िल्टर करने के लिए कुछ अतिरिक्त गोंद के साथ url-regex के एक कार्यान्वयन का उपयोग किया।

हालाँकि, प्रोडक्शन में Forward Email पर इसका उपयोग करने के बाद (जो प्रति सप्ताह सैकड़ों-हजारों ईमेल संसाधित करता है), मुझे url-regex के साथ कई और मूलभूत समस्याएँ मिलीं और उनका दस्तावेज़ीकरण किया।

यह महसूस करते हुए कि url-regex अब सक्रिय रूप से अनुरक्षित नहीं है, इस लेखन के समय 9 खुले पुल अनुरोध हैं, और इसमें ब्राउज़र समर्थन का भी अभाव था – मैंने सभी के लिए यह पैकेज लिखने और सभी खुले पुल अनुरोधों को विलय करने का निर्णय लिया।

उम्मीद है कि यह पैकेज URL रेगुलर एक्सप्रेशन के वास्तविक दुनिया के इच्छित उपयोग से अधिक निकटता से मेल खाएगा, और उपयोगकर्ता को इसे अपनी इच्छानुसार कॉन्फ़िगर करने की अनुमति देगा। यदि इस पैकेज ने आपकी मदद की है तो कृपया Forward Email देखें, और GitHub पर हमारे स्रोत कोड का अन्वेषण करें जो दिखाता है कि हम इस पैकेज का उपयोग कैसे करते हैं।

स्थापना

नोट: इस पैकेज का डिफ़ॉल्ट व्यवहार re2 को लोड करने का प्रयास करेगा (यह एक वैकल्पिक पीयर निर्भरता है जिसका उपयोग रेगुलर एक्सप्रेशन डेनियल ऑफ सर्विस हमलों और अधिक को रोकने के लिए किया जाता है)। यदि आप इस व्यवहार का उपयोग करना चाहते हैं, तो आपके पास npm install re2 के माध्यम से re2 स्थापित होना चाहिए – अन्यथा यह सामान्य RegExp इंस्टेंस का उपयोग करने के लिए वापस आ जाएगा। v4.0.0 के अनुसार हमने एक विकल्प जोड़ा है यदि आप इस पैकेज को re2 लोड करने का प्रयास भी नहीं करने के लिए बाध्य करना चाहते हैं (उदा. यह आपके node_modules में है लेकिन आप इसका उपयोग नहीं करना चाहते) – बस एक विकल्प के रूप में re2: false पास करें।

npm:

root@kitploit:~
npm install url-regex-safe

उपयोग

Node

हमने Node.js उपयोग के लिए RE2 शामिल करके CVE-2020-7661 को हल कर दिया है। अब आपको url-regex-safe के माध्यम से अपने URL रेगुलर एक्सप्रेशन को new RE2(urlRegex()) के साथ मैन्युअल रूप से लपेटने की आवश्यकता नहीं होगी (हम इसे आपके लिए स्वचालित रूप से करते हैं)।

root@kitploit:~
const urlRegexSafe = require('url-regex-safe');

const str = 'some long string with url.com in it';
const matches = str.match(urlRegexSafe());

for (const match of matches) {
  console.log('match', match);
}

console.log(urlRegexSafe({ exact: true }).test('github.com'));

ब्राउज़र

चूंकि RE2 ब्राउज़र के लिए नहीं बनाया गया है, इसलिए इसका उपयोग नहीं किया जाएगा, और इसलिए CVE-2020-7661 अभी भी क्लाइंट-साइड पर एक समस्या है। हालाँकि यह गंभीर नहीं है क्योंकि यह अधिक से अधिक ब्राउज़र टैब को क्रैश कर सकता है (जैसे Node.js की ओर यह पूरी प्रक्रिया को क्रैश कर देता और मेमोरी से बाहर का अपवाद फेंक देता)।

VanillaJS

यदि आप हर जगह केवल <script> टैग का उपयोग कर रहे हैं तो यह आपके लिए समाधान है!

root@kitploit:~
<script src="https://unpkg.com/url-regex-safe"></script>
<script type="text/javascript">
  (function() {
    var str = 'some long string with url.com in it';
    var matches = str.match(urlRegexSafe());

    for (var i=0; i<matches.length; i++) {
      console.log('match', matches[i]);
    }

    console.log(urlRegexSafe({ exact: true }).test('github.com'));
  })();
</script>

Bundler

मान लें कि आप browserify, webpack, rollup, या किसी अन्य बंडलर का उपयोग कर रहे हैं, तो आप ऊपर दिए गए Node उपयोग का आसानी से अनुसरण कर सकते हैं।

TypeScript

TypeScript के साथ इस पैकेज का उपयोग करने के लिए, आप प्रकार परिभाषाओं के लिए @types/url-regex-safe पैकेज स्थापित कर सकते हैं।

root@kitploit:~
npm install --save-dev @types/url-regex-safe

विकल्प

url-regex से त्वरित सुझाव और प्रवासन

यदि आप github.com का स्वयं (अकेले) मिलान नहीं करना चाहते हैं तो आपको डिफ़ॉल्ट को ओवरराइड करके strict: true सेट करना होगा (हालाँकि यदि strict: false है तो www.github.com काम करेगा)।

अप्रचलित और अनुरक्षित नहीं किए गए पैकेज url-regex के विपरीत, हम कुछ चीज़ें अलग तरीके से करते हैं:

  • हम strict को डिफ़ॉल्ट रूप से false पर सेट करते हैं (url-regex में यह true पर सेट था)
  • हमने एक auth विकल्प जोड़ा, जो डिफ़ॉल्ट रूप से false पर सेट है (url-regex बेसिक प्रमाणीकरण के विरुद्ध मिलान करता है; यह true पर सेट था - हालाँकि यह Chromium में एक बहिष्कृत व्यवहार है)।
  • हमने parens और ipv6 विकल्प जोड़े, जो डिफ़ॉल्ट रूप से false और true पर सेट हैं (url-regex में parens true पर सेट था और ipv6 अस्तित्वहीन था या बल्कि पर सेट था)।

सीमाएँ

यह सीमा केवल तब लागू होती है जब आप re2 का उपयोग कर रहे हों: चूंकि हम रेगुलर एक्सप्रेशन की "negative lookbehinds" कार्यक्षमता का उपयोग नहीं कर सकते (RE2 की सीमाओं के कारण), हम इस पुल अनुरोध से तर्क को विलय नहीं कर सके। इससे हमें यह संभव होता कि example.jpeg केवल तभी मिलान होता यदि यह example.jp होता, हालाँकि यदि आप अभी example.jpeg पास करते हैं तो यह उसमें से example.jp निकालेगा (क्योंकि .jp एक TLD है)। एक वैकल्पिक समाधान मौजूद हो सकता है, और हम इस मामले में सामुदायिक योगदान का स्वागत करते हैं।

योगदानकर्ता

नामवेबसाइट
Forward Email LLChttps://forwardemail.net
Kevin Mårtensson
Diego Perini

लाइसेंस

MIT © Forward Email LLC

टूल डाउनलोड करें
गुणप्रकारडिफ़ॉल्ट मानविवरण
re2Booleantruere2 लोड करने का प्रयास करें ताकि नए रेगुलर एक्सप्रेशन इंस्टेंस बनाने के लिए RegExp के बजाय इसका उपयोग किया जा सके। यदि आप re2: false पास करते हैं, तो re2 लोड करने का प्रयास भी नहीं किया जाएगा।
exactBooleanfalseकेवल एक सटीक String मिलान करें। यह जाँचने के लिए कि कोई String URL है या नहीं, regex.test(str) के साथ उपयोगी है। हमने इसे डिफ़ॉल्ट रूप से false पर सेट किया है ताकि github.com जैसे String मानों का मिलान किया जा सके (प्रोटोकॉल या www सबडोमेन की आवश्यकता के विपरीत)। हमें लगता है कि यह इस पैकेज के वास्तविक दुनिया के इच्छित उपयोग से अधिक निकटता से मेल खाता है।
strictBooleanfalseयदि true पर सेट किया जाए तो URL को एक मान्य प्रोटोकॉल या www से शुरू करने के लिए बाध्य करें। यदि true है, तो यह किसी भी TLD को अनुमति देगा जब तक कि यह न्यूनतम 2 मान्य वर्णों का हो। यदि यह false है, तो यह tlds का उपयोग करके मान्य TLD की सूची के विरुद्ध TLD का मिलान करेगा।
authBooleanfalseबेसिक प्रमाणीकरण हेडर के विरुद्ध मिलान करें। हमने इसे डिफ़ॉल्ट रूप से false पर सेट किया है क्योंकि यह Chromium में बहिष्कृत कर दिया गया था, और अन्यथा यह उपयोगकर्ता को अवांछित URL मिलान देता है (इसे डिफ़ॉल्ट रूप से false पर सेट करके यह इस पैकेज के वास्तविक दुनिया के इच्छित उपयोग से अधिक निकटता से मेल खाता है)।
localhostBooleantrueURL के होस्टनाम भाग में localhost की अनुमति देता है। localhost परीक्षण और यह कैसे एक ऐसा मान लौटाएगा जो अवांछित हो सकता है, की अधिक जानकारी के लिए test/test.js देखें। "pic.jp" बनाम "pic.jpg" समस्या को हल करने के लिए एक पुल अनुरोध पर विचार किया जाएगा।
parensBooleanfalseमार्कडाउन-शैली के अनुगामी कोष्ठक के विरुद्ध मिलान करें। हमने इसे false पर सेट किया है क्योंकि मार्कडाउन URL के लिए पार्स करना उपयोगकर्ता पर निर्भर होना चाहिए।
apostrophesBooleanfalseएपॉस्ट्रॉफ़ी के विरुद्ध मिलान करें। हमने इसे false पर सेट किया है क्योंकि हम नहीं चाहते कि String background: url('http://example.com/pic.jpg'); का परिणाम http://example.com/pic.jpg' हो। अधिक जानकारी के लिए यह समस्या देखें।
trailingPeriodBooleanfalseअनुगामी पीरियड (अवधि) के विरुद्ध मिलान करें। हमने इसे डिफ़ॉल्ट रूप से false पर सेट किया है क्योंकि वास्तविक दुनिया का व्यवहार मिलान के रूप में example.com बनाम example.com. चाहेगा (यह url-regex से अलग है जहाँ यह उस पैकेज में अनुगामी पीरियड का मिलान करता है)।
ipv4BooleantrueIPv4 URL के विरुद्ध मिलान करें।
ipv6BooleantrueIPv6 URL के विरुद्ध मिलान करें।
tldsArraytldsविशिष्ट tlds की सूची, या tlds द्वारा प्रदान की गई डिफ़ॉल्ट सूची के विरुद्ध मिलान करें।
returnStringBooleanfalseRegExp के बजाय RegExp को String के रूप में लौटाएँ (कस्टम लॉजिक के लिए उपयोगी, जैसे हमने Spam Scanner के साथ किया था)।
false
  • हमने एक apostrophe विकल्प जोड़ा, जो डिफ़ॉल्ट रूप से false पर सेट है (url-regex में यह true पर सेट था)।
  • हमने एक trailingPeriod विकल्प जोड़ा, जो डिफ़ॉल्ट रूप से false पर सेट है (जिसका अर्थ है कि मिलानों में अनुगामी पीरियड नहीं होंगे, जबकि url-regex में यह true पर सेट था)।