ایک عوامی فارم جو کبھی نجی نیٹ ورک سے بات نہیں کرتا، پھر بھی وہ ڈیٹا پیدا کرتا ہے جس کا فیصلہ نجی نیٹ ورک کو کرنا ہوتا ہے۔ ٹنل صرف یہ بدلتا ہے کہ کون کس کو کال کرتا ہے۔ ڈاؤن لوڈ کے بعد ہر چیز درآمد کا فیصلہ ہے، اور وہ نجی طرف سے تعلق رکھتی ہے۔ یہ رہنما ایک جمع کرانے کو براؤزر سے ریکارڈ شدہ اندرونی ریکارڈ تک فالو کرتا ہے۔

وہیں سے شروع کریں جہاں جمع کرانا پہنچتا ہے

براؤزر ایک عوامی اینڈ پوائنٹ پر بھیجتا ہے، جو کنٹرول شدہ وصولی ذخیرے میں ایک قطار لکھتا ہے اور تصدیق سے زیادہ کچھ واپس نہیں کرتا۔ وہی ذخیرہ حوالگی کا مقام ہے، اور عوامی سطح صرف اسی میں لکھ سکتی ہو۔ خام ڈیٹا وہیں بغیر تبدیلی رکھیں، اس کے آنے کا وقت اور مستحکم ریکارڈ شناخت کنندہ کے ساتھ۔

پھر نجی کارکن ٹنل کے ذریعے زیر التوا قطاریں کھینچتا ہے اور ہر ایک کے ساتھ کیا کرنا ہے طے کرتا ہے۔ وہ اپنی شناخت کے تحت کام کرتا ہے، اور یہی اگلے حصے کا موضوع ہے۔

curl --silent --fail \
  --cert /etc/importer/client.crt --key /etc/importer/client.key \
  "https://intake.corp.internal/api/pending?limit=20" \
  -o /var/lib/importer/pending.json

درآمد کنندہ کو صرف وہی اختیار دیں جس کی اسے ضرورت ہے

عوامی ویب عمل اور اندرونی ایپلیکیشن میں لکھنے والی شناخت دو مختلف پرنسپل ہونی چاہئیں۔ عوامی سرور کو صرف اس لیے اندرونی انتظام کی ضرورت نہیں کہ اسے فارم ڈیٹا پہنچانا ہے، اور دونوں طرف کے لیے ایک مشترکہ اکاؤنٹ کسی بھی ویب خرابی کو اندرونی تحریر بنا دیتا ہے۔ کارکن کو اس کی اپنی اسناد جاری کریں، انہیں ایک ہی درآمدی عمل تک محدود کریں، اور ریکارڈ کریں کہ ہر درآمد کس پرنسپل نے کی۔ یہی علیحدگی ٹنل کی حد کو سجاوٹی نہیں بلکہ بامعنی بناتی ہے۔

یہ بھی محدود کریں کہ کارکن کس ماخذ سے پڑھ سکتا ہے۔ اگر عمل درآمد قطار یا منتقلی سروس استعمال کرتا ہے تو وہ سروس اپنی توثیق اور رسائی پالیسی رکھتی ہے، کیونکہ VPN پے لوڈ کے اندر کسی چیز کی توثیق نہیں کرتا۔

مختصر مدت کا فنکشن بھی اسی جائزے سے مستثنیٰ نہیں۔ جب تک وہ چلتا ہے، اس کی نیٹ ورک پوزیشن اور اسناد اختیار دیتی رہتی ہیں، اور مختصر عمر صرف کھڑکی کو تنگ کرتی ہے۔ عمر اس فیصلے کا متبادل نہیں کہ شناخت کون سے عمل کر سکتی ہے۔

اندرونی طور پر کچھ بدلنے سے پہلے توثیق کریں

عوامی فارم کے خانے اس وقت تک حملہ آور کے کنٹرول میں متن ہیں جب تک اس کے برعکس ثابت نہ ہو، اور OWASP کی ان پٹ توثیق کی رہنمائی اسی وجہ سے بیک اینڈ فیڈز کو ناقابل اعتماد ذرائع میں شمار کرتی ہے۔ خفیہ کردہ منتقلی یہ کہتی ہے کہ بائٹس محفوظ پہنچے، یہ نہیں کہ وہ کوئی جائز درخواست بیان کرتے ہیں۔ کسی بھی مراعات یافتہ مرحلے سے پہلے تجزیہ اور توثیق کریں، تاکہ خراب قطار کبھی ایسے کوڈ راستے تک نہ پہنچے جو عمل کر سکے۔

جائز خانے، ان کی شکلیں، ان کے حجم اور کاروباری قواعد جو پورے ہونے چاہئیں، متعین کریں۔ تاریخ درست شکل میں ہو سکتی ہے اور پھر بھی مطلوبہ عمل کے لیے غلط ہو سکتی ہے، اور اندرونی اکاؤنٹ یا منظوری کی حیثیت کا نام لینے والا پے لوڈ خود کو ان میں سے کوئی بھی نہیں دے سکتا۔

مسترد قطاریں اصلاح کا اندازہ لگانے کے بجائے جائزے کے نتیجے کو بھیجیں، یا انہیں شیل یا خام ڈیٹا بیس انٹرفیس تک نہ بھیجیں۔ ریکارڈ شناخت کنندہ اور ناکام قاعدہ لاگ کریں، درخواست دہندہ کے ٹائپ کردہ ہر خانے کو نہیں۔

ایک عمل پر دوبارہ کوشش کا مقام بنائیں

اگر submission-1042 ریکارڈ دو بار کھینچا جائے کیونکہ پہلی تصدیق گم ہو گئی، تو کارکن کو ماخذ ریکارڈ اور اس کے ریکارڈ شدہ نتیجے کو پہچاننے کا پائیدار طریقہ درکار ہے۔ ایک بار کام چلانے والا شیڈول یہ ثابت نہیں کرتا کہ ہر قطار ایک بار لاگو ہوئی۔ دوہری ترسیل عام ہے، اس لیے ڈیزائن کو اسے جذب کرنا چاہیے۔

اندرونی ایپلیکیشن کا اپنا ٹرانزیکشن اور ڈپلیکیٹ سنبھالنے کا طریقہ کار استعمال کریں، اور ماخذ شناخت کنندہ، نتیجہ اور تصدیق کو ایک ہی مربوط ترتیب میں رکھیں۔ صرف اس وقت تصدیق کریں جب مطلوبہ عمل ریکارڈ ہو جائے یا پائیدار طور پر تفویض ہو جائے، اور صرف اس لیے وصولی قطار کو کبھی نہ مٹائیں کہ بائٹس ڈاؤن لوڈ ہو گئے۔

پھر اسے تین مقررہ ٹیسٹ ڈیٹا سے ثابت کریں: درست قطار، غلط شکل والی قطار، اور وہی کنٹرول شدہ ماخذ شناخت کنندہ جو دو بار بھیجا گیا۔ ہر ایک اسی اینڈ پوائنٹ سے گزرتا ہے جو کارکن استعمال کرتا ہے۔

for f in fixtures/valid-submission.json fixtures/bad-date.json; do
  curl --silent --fail --cert /etc/importer/client.crt \
    -X POST --data @"$f" https://intake.corp.internal/api/records
done
curl --silent --fail --cert /etc/importer/client.crt \
  -X POST --data @fixtures/valid-submission.json https://intake.corp.internal/api/records

پہلی دو قطاریں مختلف اندرونی حالتوں میں ختم ہونی چاہئیں، اور تیسری کو دوسری بنانے کے بجائے اس ماخذ ریکارڈ کے لیے پہلے سے ریکارڈ شدہ شناخت کنندہ واپس کرنا چاہیے۔ کوئی بھی دوسرا نتیجہ یہ معنی رکھتا ہے کہ درآمد ابھی قابل تکرار نہیں۔

متعلقہ مضامین