سیکیورٹی

ہمارا سیکیورٹی ماڈل ایک جملے میں: سرور پر حملہ کرنے کے لیے کچھ ہے ہی نہیں۔ نیچے دی گئی ہر بات آپ کے DevTools سے قابل تصدیق ہے۔

آرکیٹیکچر

یہ جنریٹر ایک اسٹیٹک سنگل پیج ایپلیکیشن ہے جو Cloudflare Pages سے پیش کی جاتی ہے: کوئی یوزر اکاؤنٹ نہیں، کوئی تصدیق نہیں، اور جنریشن فلو میں کہیں بھی کوئی بیک اینڈ کوڈ پاتھ نہیں۔ ہر QR جنریشن، انکوڈنگ، اسکیننگ اور رینڈرنگ آپریشن مکمل طور پر آپ کے براؤزر کے اندر چلتا ہے۔ اس کے ساتھ ایک چھوٹا serverless endpoint بھی موجود ہے اور اسے چھپانے کی بجائے یہاں درج کیا جا رہا ہے: /api/contact (رابطہ فارم، جو آپ کے جمع کردہ ڈیٹا کو Cloudflare D1 میں محفوظ کرتا ہے اور ہمیں ای میل کرتا ہے)۔ QR کوڈ بناتے وقت اسے کال نہیں کیا جاتا؛ URL سیفٹی چیکر ایک علیحدہ پروڈکٹ ہے جو check.qr.abundera.ai پر ہے۔ QR کوڈ محفوظ ہے یا نہیں جانچیں

خطرے کا ماڈل

چونکہ یہ جنریٹر کوئی یوزر ڈیٹا جمع، ذخیرہ یا منتقل نہیں کرتا (اوپر دیے گئے دونوں endpoints صرف وہی ڈیٹا ہینڈل کرتے ہیں جو آپ خود انہیں بھیجتے ہیں)، ویب ایپ کے سب سے عام خطرات, کریڈینشل چوری، ڈیٹابیس لیک، سیشن ہائی جیکنگ، سرور سائیڈ انجیکشن, اس پر لاگو نہیں ہوتے۔ باقی ماندہ حملے کی سطح ہمارے اصل سے پیش کردہ اسٹیٹک اثاثہ بنڈل (HTML، CSS، JavaScript) ہے۔ ہم فرض کر کے ڈیزائن کرتے ہیں:

Content Security Policy, ڈائریکٹیو کے مطابق

نیچے دی گئی پالیسی اس صفحے کے build ہونے کے وقت deploy شدہ _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 یہ محدود کرتا ہے کہ براؤزر کہاں سے کوڈ لوڈ کرے گا۔ یہ جانچ نہیں کرتا کہ لوڈ شدہ کوڈ کیا کرتا ہے۔ اگر ہمارا اصل سمجھوتہ کا شکار ہو جائے, خطرے کے ماڈل کی پہلی چیز, تو حملہ آور کا اسکرپٹ اسی اجازتوں کے ساتھ چلے گا جو ہمارے پاس ہیں، بشمول اوپر دیے گئے connect-src اور img-src کی رعایتیں۔ اس کے خلاف ہمارا دفاع CSP سے پہلے کی سطح پر ہے: تعیناتیاں ایک ہی Cloudflare اکاؤنٹ سے scoped tokens کے ذریعے جاتی ہیں، اثاثوں کے فائل نام content-hashed ہیں تاکہ بدلی ہوئی فائل ہر اس URL کو بدل دے جو اسے حوالہ دیتا ہے، اور سروس ورکر صرف same-origin GET responses کیش کرتا ہے۔ منشور سائٹ کو جیسا شپ کی گئی ہے ویسا بیان کرتا ہے۔ یہ یہ دعویٰ نہیں کہ کوئی ویب صفحہ کبھی کہیں ڈیٹا نہیں بھیج سکتا، اور ہم چاہیں گے کہ آپ ہمیں اس تنگ تر، قابلِ تصدیق بیان پر پرکھیں۔

/bio/* (یوزر کے دیے گئے avatars کے لیے ڈھیلا img-src) اور /embed/* (جان بوجھ کر embedding کے لیے ڈھیلا frame-ancestors) پر الگ CSP پالیسیاں لاگو ہوتی ہیں۔ دونوں site/_headers میں دستاویز شدہ ہیں۔

ٹرانسپورٹ + فریمنگ ہیڈرز

سروس ورکر

ہمارا سروس ورکر (site/sw.js) صرف same-origin اثاثے cache کرتا ہے۔ fetch handler واضح طور پر cross-origin درخواستیں اور non-GET طریقے مسترد کرتا ہے, آپ /sw.js میں logic پڑھ سکتے ہیں (source اتنا unminified شپ ہوتا ہے کہ اسے فالو کیا جا سکے)۔ Cache writes event.waitUntil() میں لپٹے ہوئے ہیں تاکہ navigation کے دوران ڈراپ نہ ہوں۔

ان پٹ صفائی

ہر رینڈرنگ پاتھ جو یوزر ان پٹ قبول کرتا ہے اسے ناقابل اعتماد متن کے طور پر برتتا ہے:

کراس اورجن امیج فیچنگ

جب کوئی یوزر vCard فوٹو یا لوگو کے طور پر کوئی https: URL پیسٹ کرتا ہے تو براؤزر اسے CORS اور ہمارے CSP کی img-src allowlist کے تابع فیچ کرتا ہے۔ تصویر canvas پر رینڈر ہوتی ہے۔ یہ کبھی live DOM نہیں بنتی، کبھی code کے طور پر نہیں چلتی، اور کبھی ہمارے اصل تک نہیں پہنچتی, فیچ براؤزر → remote image ہے، اور نتیجہ client-side پر paint ہوتا ہے۔ remote image URL کنٹرول کرنے والا حملہ آور یہ ٹریک کر سکتا ہے کہ URL لوڈ ہوا (اپنے سرور پر ایک log line) لیکن ہمارے صفحے سے کچھ نہیں نکال سکتا۔

Subresource Integrity (SRI)

ہم جو JavaScript اور CSS ship کرتے ہیں وہ سب same-origin ہے۔ ہم کوئی تھرڈ پارٹی scripts یا stylesheets لوڈ نہیں کرتے، اس لیے SRI hashes لاگو نہیں ہوتے۔ اگر ہم کبھی کوئی تھرڈ پارٹی اثاثہ لوڈ کریں گے تو اس پر SRI integrity attribute ship کریں گے اور hash-update process اس صفحے پر دستاویز کریں گے۔

خطرے کی اطلاع دینا

اگر آپ Abundera QR کو متاثر کرنے والا کوئی سیکیورٹی مسئلہ دریافت کریں, چاہے ہمارے کوڈ، ہماری تعیناتی یا ہم جو dependency ship کرتے ہیں اس میں, براہ کرم اسے نجی طور پر security@abundera.ai کو رپورٹ کریں۔ ہم ۷۲ گھنٹوں میں triage کرنے کا ہدف رکھتے ہیں۔ آپ ہمارے /.well-known/security.txt فائل میں رابطے کی تفصیلات کے ذریعے بھی رابطہ کر سکتے ہیں۔

کوئی bug bounty نہیں (ابھی کے لیے)

ہم ابھی ادائیگی شدہ انعامات پیش نہیں کرتے، لیکن ہر تصدیق شدہ درست رپورٹ کو changelog میں credit اور ہمارا عوامی شکریہ ملتا ہے۔

مندرجہ بالا کسی بھی بات کی تصدیق کریں

اس صفحے پر ہر دعوی آپ کے براؤزر کے DevTools سے ہم پر اعتماد کیے بغیر قابل تصدیق ہے:

رابطہ

سیکیورٹی انکشافات: security@abundera.ai

آخری اپڈیٹ: 2026-09-03۔ اگلا جائزہ: 2026-12-03۔