Skip to content

Security hi

Hammad Maqbool edited this page Oct 29, 2026 · 1 revision

English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt

docxi सुरक्षा: समस्याओं की रिपोर्ट और अविश्वसनीय इनपुट को संभालना

यह पेज बताता है कि सुरक्षा समस्या की रिपोर्ट कैसे करें, और जब आपका ऐप यूज़र इनपुट docxi को देता है तब सुरक्षा से जुड़ी किन बातों को जानना चाहिए।

कमज़ोरी की रिपोर्ट करना

कृपया सुरक्षा समस्याओं की रिपोर्ट सार्वजनिक issue में न करें। इसके बजाय docxi.gemspec में दिए गए रखरखाव वाले ईमेल पतों पर लिखें। docxi का वर्शन और समस्या दोहराने का एक छोटा तरीका ज़रूर बताएं।

0.0.x से अपग्रेड करें

docxi 0.0.x इमेज पाथ की स्ट्रिंग Kernel#open को देता है। Kernel#open, | से शुरू होने वाली स्ट्रिंग को शेल कमांड की तरह चलाता है, इसलिए जिसके नियंत्रण में इमेज पाथ हो, वह आपके सर्वर पर कमांड चला सकता है। 0.1.0 फ़ाइलें File.open से खोलता है और URL URI#open से डाउनलोड करता है। इनमें से कोई भी कमांड नहीं चलाता।

अविश्वसनीय इनपुट

टेक्स्ट देना सुरक्षित है। टेक्स्ट, टेबल का कंटेंट और दूसरी स्ट्रिंग XML टेक्स्ट या एट्रिब्यूट मान के रूप में लिखी जाती हैं, जिन्हें nokogiri एस्केप करता है। यूज़र इनपुट डॉक्यूमेंट में एलिमेंट नहीं जोड़ सकता।

इमेज सोर्स में सावधानी चाहिए। add_media ये स्वीकार करता है:

सोर्स docxi क्या करता है
आपका खोला हुआ IO उसे पढ़ता है
फ़ाइल पाथ आपके सर्वर की डिस्क से वह फ़ाइल पढ़ता है
http, https या ftp URL आपके सर्वर से उसे डाउनलोड करता है

अगर यूज़र पाथ चुन सकता है, तो वह आपके सर्वर की कोई भी पढ़ने लायक फ़ाइल, जैसे कॉन्फ़िगरेशन या की, डॉक्यूमेंट में शामिल करवा सकता है। अगर यूज़र URL चुन सकता है, तो आपका सर्वर उसे रिक्वेस्ट करेगा, जिससे अंदरूनी पतों तक पहुंचा जा सकता है (सर्वर-साइड रिक्वेस्ट फ़ोर्जरी, SSRF)। अपना खोला हुआ IO दें, या सिर्फ़ जाने-पहचाने पाथ और होस्ट की अनुमति दें।

हाइपरलिंक वहीं ले जाते हैं जहां URL कहता है। यूज़र के दिए URL को add_hyperlink को देने से पहले जांच लें।

रिलीज़ कैसे सुरक्षित रहती हैं

  • रिलीज़ GitHub Actions से RubyGems की ट्रस्टेड पब्लिशिंग (trusted publishing) के ज़रिए प्रकाशित होती हैं, इसलिए रिपॉज़िटरी में कोई API की नहीं रखी जाती।
  • gem मेटाडेटा rubygems_mfa_required सेट करता है, इसलिए निजी API की से किए गए पुश के लिए मल्टी-फ़ैक्टर ऑथेंटिकेशन ज़रूरी है।

संबंधित पेज


← विकी होम · README

Clone this wiki locally