सुरक्षा

हमारा सुरक्षा मॉडल एक वाक्य में: सर्वर पर हमला करने के लिए कुछ है ही नहीं। नीचे दी गई हर बात आपके DevTools से सत्यापित की जा सकती है।

आर्किटेक्चर

जनरेटर एक स्थैतिक सिंगल-पेज एप्लिकेशन है जो Cloudflare Pages से परोसा जाता है: कोई यूज़र अकाउंट नहीं, कोई प्रमाणीकरण नहीं, और जेनरेशन फ़्लो में कहीं भी कोई बैकएंड कोड पथ नहीं है। हर QR जनरेशन, एन्कोडिंग, स्कैनिंग और रेंडरिंग ऑपरेशन पूरी तरह आपके ब्राउज़र के अंदर चलता है। इसके साथ एक छोटा सर्वरलेस एंडपॉइंट है जिसे छिपाने के बजाय यहाँ सूचीबद्ध किया गया है: /api/contact (संपर्क फ़ॉर्म, जो आपके सबमिट किए गए डेटा को Cloudflare D1 में संग्रहीत करता है और हमें ईमेल करता है)। QR कोड बनाते समय इसे कॉल नहीं किया जाता; URL सुरक्षा जांच check.qr.abundera.ai पर एक अलग उत्पाद है। QR कोड सुरक्षित है या नहीं जांचें

खतरे का मॉडल

चूंकि जनरेटर कोई उपयोगकर्ता डेटा एकत्र, संग्रहीत या प्रसारित नहीं करता (ऊपर दिए गए दोनों एंडपॉइंट केवल वही संभालते हैं जो आप उन्हें स्पष्ट रूप से भेजते हैं), सबसे सामान्य वेब-ऐप खतरे, क्रेडेंशियल चोरी, डेटाबेस उल्लंघन, सेशन हाइजैकिंग, सर्वर-साइड इंजेक्शन, इस पर लागू नहीं होते। शेष हमला सतह हमारे मूल स्रोत से परोसा जाने वाला स्थैतिक एसेट बंडल (HTML, CSS, JavaScript) है। हम यह मानकर डिज़ाइन करते हैं:

कंटेंट सिक्योरिटी पॉलिसी, प्रत्येक निर्देश के अनुसार

नीचे दी गई नीति इस पेज के बिल्ड होने पर डिप्लॉय किए गए _headers फ़ाइल से पढ़ी जाती है, इसलिए यह उससे अलग नहीं हो सकती जो edge भेजता है। इसे किसी भी अनुरोध के response headers में सत्यापित करें।

Content-Security-Policy:
  default-src 'self';
  script-src 'self' https://abundera.ai 'wasm-unsafe-eval' https://challenges.cloudflare.com;
  worker-src 'self' blob:;
  style-src 'self' 'unsafe-inline' https://abundera.ai;
  font-src 'self';
  img-src 'self' data: blob: https:;
  connect-src 'self' https: https://challenges.cloudflare.com;
  frame-src 'self' https://challenges.cloudflare.com;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self'

प्रत्येक निर्देश हमें क्या करने देता है और कहाँ समझौता करता है:

CSP क्या नहीं कर सकता

CSP यह सीमित करता है कि ब्राउज़र कहाँ से कोड लोड करेगा। यह जाँच नहीं करता कि लोड किया गया कोड क्या करता है। अगर हमारा ओरिजिन compromise हो जाए, जो threat model में पहला आइटम है, तो हमलावर की स्क्रिप्ट वही permissions के साथ चलेगी जो हमारी हैं, जिसमें ऊपर दिए गए connect-src और img-src की छूट भी शामिल है। इसके खिलाफ हमारी सुरक्षा CSP से पहले बैठती है: deploys एक ही Cloudflare account से scoped tokens के साथ जाते हैं, asset filenames content-hashed होते हैं ताकि बदली गई फ़ाइल उसे संदर्भित करने वाले हर URL को बदल दे, और service worker केवल same-origin GET responses cache करता है। घोषणापत्र साइट को जैसे shipped है वैसे बताता है। यह यह दावा नहीं है कि कोई भी वेब पेज कभी कहीं डेटा नहीं भेज सकता, और हम चाहेंगे कि आप हमें इस संकरे, जाँचने-योग्य बयान पर परखें।

/bio/* (उपयोगकर्ता द्वारा दिए गए अवतार के लिए img-src में ढील) और /embed/* (जानबूझकर embedding के लिए frame-ancestors में ढील) पर अलग-अलग CSP नीतियाँ लागू होती हैं। दोनों site/_headers में documented हैं।

ट्रांसपोर्ट + फ्रेमिंग हेडर

Service Worker

हमारा Service Worker (site/sw.js) केवल same-origin एसेट cache करता है। fetch handler स्पष्ट रूप से cross-origin अनुरोधों और गैर-GET methods को अस्वीकार करता है, आप /sw.js में logic पढ़ सकते हैं (सोर्स इतना unminified शिप होता है कि उसे फॉलो किया जा सके)। Cache writes को event.waitUntil() में wrap किया गया है ताकि वे navigation के बीच में drop न हों।

इनपुट sanitization

उपयोगकर्ता इनपुट स्वीकार करने वाला हर rendering path उसे अविश्वसनीय text मानता है:

Cross-origin image fetching

जब कोई उपयोगकर्ता vCard फ़ोटो या logo के रूप में https: URL पेस्ट करता है, तो ब्राउज़र इसे CORS और हमारी CSP की img-src allowlist के अधीन fetch करता है। छवि canvas में render होती है। यह कभी live DOM नहीं बनती, कभी code के रूप में नहीं चलती, और कभी हमारे ओरिजिन तक नहीं पहुँचती, fetch browser → remote image है, और result client-side paint होता है। remote image URL को control करने वाला हमलावर track कर सकता है कि URL load हुआ (उनके सर्वर पर एक log line) लेकिन हमारे page से कुछ भी exfiltrate नहीं कर सकता।

Subresource Integrity (SRI)

हम जो भी JavaScript और CSS ship करते हैं वह same-origin है। हम कोई third-party scripts या stylesheets load नहीं करते, इसलिए SRI hashes लागू नहीं होते। यदि हम कभी third-party asset load करें, तो हम उस पर SRI integrity attribute ship करेंगे और इस page में hash-update process document करेंगे।

कोई भेद्यता रिपोर्ट करना

यदि आप Abundera QR को प्रभावित करने वाला कोई सुरक्षा मुद्दा खोजते हैं, चाहे हमारे code में, हमारे deployment में, या किसी dependency में जो हम ship करते हैं, कृपया इसे निजी तौर पर security@abundera.ai को रिपोर्ट करें। हम 72 घंटों के भीतर triage करने का लक्ष्य रखते हैं। आप हमारी /.well-known/security.txt फ़ाइल में संपर्क विवरण के माध्यम से भी हमसे संपर्क कर सकते हैं।

कोई bug bounty नहीं (अभी के लिए)

हम वर्तमान में paid bounties प्रदान नहीं करते, लेकिन हर पुष्टि की गई वैध रिपोर्ट को changelog में credit और हमारा सार्वजनिक धन्यवाद मिलता है।

उपरोक्त किसी भी बात को सत्यापित करें

इस page पर हर दावा आपके ब्राउज़र के DevTools से हम पर भरोसा किए बिना falsifiable है:

संपर्क

सुरक्षा प्रकटीकरण: security@abundera.ai

अंतिम अपडेट: 2026-09-03। अगली समीक्षा: 2026-12-03।