یہ مضمون ان پوسٹس کی سیریز میں پہلا ہے جو میں گزشتہ 8 سالوں سے SaaS کی مختلف مصنوعات اور ویب سائٹس چلانے کے بارے میں لکھ رہا ہوں۔ میں ان مسائل میں سے کچھ شیئر کروں گا جن سے میں نے نمٹا ہے، اسباق جو میں نے سیکھے ہیں، میں نے جو غلطیاں کی ہیں، اور شاید کچھ چیزیں جو درست ہوئیں۔ مجھے بتائیں آپ کیا سوچتے ہیں!
واپس 2019 یا 2020 میں، میں نے پورے پس منظر کو دوبارہ لکھنے کا فیصلہ کیا تھا بھیجنے والے کو بلاک کریں۔، ایک SaaS ایپلی کیشن جو صارفین کو دیگر خصوصیات کے علاوہ بہتر ای میل بلاکس بنانے میں مدد کرتی ہے۔ اس عمل میں، میں نے کچھ نئی خصوصیات شامل کیں اور بہت زیادہ جدید ٹیکنالوجیز میں اپ گریڈ کیا۔ میں نے ٹیسٹ چلائے، کوڈ کو متعین کیا، پیداوار میں ہر چیز کو دستی طور پر جانچا، اور کچھ بے ترتیب مشکلات اور انجام کے علاوہ، سب کچھ بہت اچھا کام کر رہا تھا۔ کاش یہ کہانی کا اختتام ہوتا، لیکن…
کچھ ہفتوں بعد، مجھے ایک گاہک (جو اپنے آپ میں شرمناک ہے) کے ذریعے مطلع کیا گیا کہ سروس کام نہیں کر رہی ہے اور انہیں اپنے ان باکس میں بہت سی مسدود ای میلز مل رہی ہیں، اس لیے میں نے تفتیش کی۔ کئی بار یہ مسئلہ گوگل کی جانب سے ہماری سروس سے صارف کے اکاؤنٹ سے کنکشن ہٹانے کی وجہ سے ہوتا ہے، جسے سسٹم صارف کو ای میل کے ذریعے مطلع کرکے اور دوبارہ رابطہ قائم کرنے کے لیے کہتا ہے، لیکن اس بار معاملہ کچھ اور تھا۔
یہ بیک اینڈ ورکر کی طرح لگتا تھا جو صارف کے بلاکس کے خلاف ای میلز کی جانچ پڑتال کرتا ہے ہر 5-10 منٹ میں کریش ہوتا رہتا ہے۔ سب سے عجیب حصہ - نوشتہ جات میں کوئی خرابی نہیں تھی، میموری ٹھیک تھی، لیکن سی پی یو کبھی کبھار بظاہر بے ترتیب اوقات میں بڑھ جاتا ہے۔ اس لیے اگلے 24 گھنٹوں کے لیے (سونے کے لیے 3 گھنٹے کے وقفے کے ساتھ – معذرت کے ساتھ صارفین 😬)، جب بھی کارکن کریش ہوا تو مجھے دستی طور پر دوبارہ شروع کرنا پڑا۔ کسی وجہ سے، Elastic Beanstalk سروس دوبارہ شروع ہونے کے لیے بہت طویل انتظار کر رہی تھی، اسی لیے مجھے اسے دستی طور پر کرنا پڑا۔
پروڈکشن میں ایشوز کو ڈیبگ کرنا ہمیشہ ایک تکلیف دہ ہوتا ہے، خاص کر چونکہ میں اس مسئلے کو مقامی طور پر دوبارہ پیش نہیں کر سکتا تھا، اس لیے یہ معلوم کرنے دیں کہ اس کی وجہ کیا تھی۔ لہذا کسی بھی "اچھے" ڈویلپر کی طرح، میں نے ابھی لاگ ان کرنا شروع کیا۔ سب کچھ اور سرور کے دوبارہ کریش ہونے کا انتظار کیا۔ چونکہ سی پی یو وقتاً فوقتاً بڑھ رہا تھا، اس لیے میں نے سوچا کہ یہ کوئی میکرو مسئلہ نہیں ہے (جیسے جب آپ کی میموری ختم ہو جائے) اور شاید کسی مخصوص ای میل یا صارف کی وجہ سے ہو رہا تھا۔ تو میں نے اسے کم کرنے کی کوشش کی:
- کیا یہ کسی مخصوص ای میل آئی ڈی یا قسم پر کریش ہو رہا تھا؟
- کیا یہ ایک دیئے گئے گاہک کے لیے کریش ہو رہا تھا؟
- کیا یہ کسی باقاعدہ وقفے سے کریش ہو رہا تھا؟
اس کے گھنٹوں کے بعد، اور لاگز کو اس سے زیادہ دیر تک گھورنے کے بعد کہ میں اس کی پرواہ نہیں کروں گا، آخر کار، میں نے اسے ایک مخصوص گاہک تک محدود کر دیا۔ وہاں سے، تلاش کی جگہ کافی کم ہو گئی - یہ غالباً ایک مسدود کرنے کا اصول تھا یا کوئی مخصوص ای میل تھا جس پر ہمارا سرور دوبارہ کوشش کرتا رہا۔ خوش قسمتی سے میرے لیے، یہ سابقہ تھا، جس کو ڈیبگ کرنا بہت آسان مسئلہ ہے کیونکہ ہم بہت پرائیویسی پر مرکوز کمپنی ہیں اور کوئی ای میل ڈیٹا اسٹور یا نہیں دیکھتے ہیں۔
اس سے پہلے کہ ہم صحیح مسئلہ میں جائیں، آئیے پہلے بلاک بھیجنے والے کی خصوصیات میں سے ایک کے بارے میں بات کرتے ہیں۔ اس وقت میرے پاس بہت سے گاہک وائلڈ کارڈ بلاک کرنے کے لیے پوچھ رہے تھے، جو انہیں مخصوص قسم کے ای میل ایڈریسز کو بلاک کرنے کی اجازت دے گا جو اسی پیٹرن کی پیروی کرتے ہیں۔ مثال کے طور پر، اگر آپ مارکیٹنگ کے ای میل پتوں سے تمام ای میلز کو بلاک کرنا چاہتے ہیں، تو آپ وائلڈ کارڈ استعمال کر سکتے ہیں۔ marketing@*
اور اس سے شروع ہونے والے کسی بھی پتے سے تمام ای میلز بلاک ہو جائیں گی۔ marketing@
.
ایک چیز جس کے بارے میں میں نے نہیں سوچا وہ یہ ہے کہ ہر کوئی نہیں سمجھتا کہ وائلڈ کارڈ کیسے کام کرتے ہیں۔ میں نے فرض کیا کہ زیادہ تر لوگ انہیں اسی طرح استعمال کریں گے جس طرح میں ایک ڈویلپر کے طور پر کرتا ہوں، ایک کا استعمال کرتے ہوئے *
حروف کی کسی بھی تعداد کی نمائندگی کرنے کے لیے۔ بدقسمتی سے، اس مخصوص صارف نے فرض کر لیا تھا کہ آپ کو استعمال کرنے کی ضرورت ہے۔ ہر ایک کردار کے لیے ایک وائلڈ کارڈ جس سے آپ میچ کرنا چاہتے تھے۔. ان کے معاملے میں، وہ ایک مخصوص ڈومین سے تمام ای میلز کو بلاک کرنا چاہتے تھے (جو کہ بلاک بھیجنے والے کی مقامی خصوصیت ہے، لیکن انہیں اس کا احساس نہیں ہونا چاہیے، جو کہ اپنے آپ میں ایک مکمل مسئلہ ہے)۔ تو استعمال کرنے کے بجائے *@example.com
، انہوں نے استعمال کیا **********@example.com
.
پی او وی: اپنے صارفین کو آپ کی ایپ استعمال کرتے ہوئے دیکھنا…
ہمارے ورکر سرور پر وائلڈ کارڈز کو ہینڈل کرنے کے لیے، ہم Node.js لائبریری کا استعمال کر رہے ہیں میچچر، جو اسے باقاعدہ اظہار میں تبدیل کرکے گلوب ملاپ میں مدد کرتا ہے۔ یہ لائبریری پھر بدل جائے گی۔ **********@example.com
مندرجہ ذیل regex کی طرح کچھ میں:
/[sS]*[sS]*[sS]*[sS]*[sS]*[sS]*[sS]*[sS]*[sS]*[sS]*@example.com/i
اگر آپ کو regex کے ساتھ کوئی تجربہ ہے، تو آپ جانتے ہیں کہ وہ بہت جلد بہت پیچیدہ ہو سکتے ہیں، خاص طور پر کمپیوٹیشنل سطح پر۔ مندرجہ بالا اظہار کو متن کی کسی بھی معقول لمبائی سے ملانا کمپیوٹیشنل طور پر بہت مہنگا ہو جاتا ہے، جس نے ہمارے ورکر سرور پر سی پی یو کو جوڑ دیا۔ یہی وجہ ہے کہ سرور ہر چند منٹ میں کریش ہو جاتا ہے۔ یہ ایک پیچیدہ ریگولر ایکسپریشن کو ای میل ایڈریس سے ملانے کی کوشش میں پھنس جائے گا۔. لہذا جب بھی اس صارف کو کوئی ای میل موصول ہوتا ہے، ان تمام کوششوں کے علاوہ جو ہم نے عارضی ناکامیوں کو سنبھالنے کے لیے کی ہیں، یہ ہمارے سرور کو کریش کر دے گا۔
تو میں نے اسے کیسے ٹھیک کیا؟ ظاہر ہے، فوری حل یہ تھا کہ یکے بعد دیگرے ایک سے زیادہ وائلڈ کارڈز والے تمام بلاکس کو تلاش کریں اور انہیں درست کریں۔ لیکن مجھے صارف کے ان پٹ کو صاف کرنے کا ایک بہتر کام کرنے کی بھی ضرورت ہے۔ کوئی بھی صارف ریجیکس درج کر سکتا ہے اور a کے ساتھ پورے سسٹم کو نیچے لے سکتا ہے۔ ReDoS حملہ.
بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!
اس مخصوص کیس کو سنبھالنا کافی آسان تھا - یکے بعد دیگرے وائلڈ کارڈ کے حروف کو ہٹائیں:
block = block.replace(/*+/g, '*')
لیکن یہ اب بھی ایپ کو دیگر اقسام کے ReDoS حملوں کے لیے کھلا چھوڑ دیتا ہے۔ خوش قسمتی سے ان اقسام میں ہماری مدد کرنے کے لیے بہت سے پیکجز/لائبریریاں موجود ہیں:
مندرجہ بالا حلوں اور دیگر حفاظتی تدابیر کے امتزاج کا استعمال کرتے ہوئے، میں اسے دوبارہ ہونے سے روکنے میں کامیاب رہا ہوں۔ لیکن یہ ایک اچھی یاد دہانی تھی کہ آپ کبھی بھی صارف کے ان پٹ پر بھروسہ نہیں کر سکتے ہیں، اور آپ کو اسے اپنی ایپلی کیشن میں استعمال کرنے سے پہلے اسے ہمیشہ صاف کرنا چاہیے۔ مجھے یہ بھی معلوم نہیں تھا کہ یہ ایک ممکنہ مسئلہ ہے جب تک کہ یہ میرے ساتھ نہیں ہوا، لہذا امید ہے کہ، اس سے کسی اور کو بھی اسی مسئلے سے بچنے میں مدد ملے گی۔
کوئی سوال، تبصرے، یا آپ کی اپنی کہانی کا اشتراک کرنا چاہتے ہیں؟ پر پہنچیں۔ ٹویٹر!
- SEO سے چلنے والا مواد اور PR کی تقسیم۔ آج ہی بڑھا دیں۔
- پلیٹو ڈیٹا ڈاٹ نیٹ ورک ورٹیکل جنریٹو اے آئی۔ اپنے آپ کو بااختیار بنائیں۔ یہاں تک رسائی حاصل کریں۔
- پلیٹوآئ اسٹریم۔ ویب 3 انٹیلی جنس۔ علم میں اضافہ۔ یہاں تک رسائی حاصل کریں۔
- پلیٹو ای ایس جی۔ کاربن، کلین ٹیک، توانائی ، ماحولیات، شمسی، ویسٹ مینجمنٹ یہاں تک رسائی حاصل کریں۔
- پلیٹو ہیلتھ۔ بائیوٹیک اینڈ کلینیکل ٹرائلز انٹیلی جنس۔ یہاں تک رسائی حاصل کریں۔
- ماخذ: https://stackabuse.com/behind-the-scenes-never-trust-user-input/
- : ہے
- : ہے
- : نہیں
- $UP
- 1
- 20
- 2019
- 2020
- 24
- 8
- a
- قابلیت
- ہمارے بارے میں
- اوپر
- اکاؤنٹ
- اصل میں
- شامل کیا
- اس کے علاوہ
- پتہ
- پتے
- پھر
- کے خلاف
- تمام
- کی اجازت
- اکیلے
- بھی
- ہمیشہ
- کے درمیان
- an
- اور
- کوئی بھی
- اپلی کیشن
- درخواست
- کیا
- مضمون
- AS
- سے پوچھ
- فرض کیا
- At
- حملے
- سے اجتناب
- آگاہ
- پسدید
- BE
- میں Beanstalk
- ہو جاتا ہے
- رہا
- اس سے پہلے
- پیچھے
- پردے کے پیچھے
- کیا جا رہا ہے
- بہتر
- بٹ
- بلاک
- مسدود کرنے میں
- بلاکس
- سرحد
- توڑ
- تعمیر
- لیکن
- by
- کر سکتے ہیں
- حاصل کر سکتے ہیں
- پرواہ
- کیس
- وجہ
- باعث
- کچھ
- کردار
- حروف
- جانچ پڑتال
- کوڈ
- مجموعہ
- تبصروں
- کمپنی کے
- پیچیدہ
- پیچیدہ
- کمپیوٹیشنل
- کنکشن
- درست
- سکتا ہے
- کر سکا
- ناکام، ناکامی
- گر کر تباہ ہوگیا۔
- کرشنگ
- تخلیق
- گاہک
- گاہکوں
- اعداد و شمار
- dealt,en
- فیصلہ کیا
- تعینات
- ڈیولپر
- DID
- نہیں کیا
- do
- ڈومین
- ڈان
- نیچے
- دو
- ہر ایک
- آسان
- اور
- ای میل
- ای میل
- آخر
- ختم
- ختم ہو جاتا ہے
- درج
- پوری
- نقائص
- خاص طور پر
- بھی
- آخر میں
- ہر کوئی
- سب
- سب کچھ
- مثال کے طور پر
- مہنگی
- تجربہ
- اظہار
- ناکامیوں
- کافی
- دور
- نمایاں کریں
- خصوصیات
- چند
- اعداد و شمار
- سمجھا
- مل
- آخر
- پہلا
- درست کریں
- توجہ مرکوز
- پیچھے پیچھے
- کے بعد
- کے لئے
- سابق
- سے
- حاصل
- حاصل کرنے
- GIF
- جاؤ
- دی
- اچھا
- گوگل
- عظیم
- رہنمائی
- تھا
- ہینڈل
- ہینڈل
- ہاتھوں پر
- ہوا
- ہو رہا ہے۔
- ہے
- مدد
- مدد کرتا ہے
- امید ہے کہ
- HOURS
- ہور
- کس طرح
- HTTPS
- i
- ID
- if
- in
- شامل
- ان پٹ
- کے بجائے
- میں
- مسئلہ
- مسائل
- IT
- خود
- ایوب
- صرف
- رکھی
- جان
- آخری
- بعد
- سیکھا ہے
- سیکھنے
- لمبائی
- اسباق
- دو
- سطح
- LG
- لائبریری
- کی طرح
- امکان
- ll
- مقامی طور پر
- لاگ ان
- لانگ
- اب
- دیکھا
- لاٹوں
- میکرو
- بنا
- دستی طور پر
- بہت سے
- مارکیٹنگ
- میچ
- کے ملاپ
- شاید
- me
- یاد داشت
- منٹ
- غلطیوں
- جدید
- جدید ٹیکنالوجیز
- زیادہ
- سب سے زیادہ
- بہت
- ایک سے زیادہ
- ضروری
- تنگ
- مقامی
- ضرورت
- کبھی نہیں
- نئی
- نئی خصوصیات
- اگلے
- نہیں
- نوڈ
- Node.js
- مطلع کرنا
- تعداد
- مشکلات
- of
- on
- ایک
- کھول
- or
- دیگر
- ہمارے
- باہر
- خود
- درد
- حصہ
- خاص طور پر
- پاٹرن
- لوگ
- پلاٹا
- افلاطون ڈیٹا انٹیلی جنس
- پلیٹو ڈیٹا
- مراسلات
- ممکنہ
- عملی
- کی روک تھام
- شاید
- مسئلہ
- عمل
- پیداوار
- حاصل
- سوالات
- فوری
- جلدی سے
- بہت
- بے ترتیب
- RE
- تک پہنچنے
- احساس ہوا
- وجہ
- مناسب
- موصول
- دوبارہ مربوط
- ریجیکس
- باقاعدہ
- یاد دہانی
- ہٹا
- کو ہٹانے کے
- کی نمائندگی
- ٹھیک ہے
- رنگ
- حکمرانی
- رن
- چل رہا ہے
- s
- ساس
- تحفظات
- اسی
- مناظر
- تلاش کریں
- لگ رہا تھا
- بظاہر
- بھیجنے والا
- سیریز
- سرور
- سروس
- شیڈو
- سیکنڈ اور
- اشتراک
- شیٹ
- ہونا چاہئے
- سادہ
- بعد
- سو
- So
- حل
- کچھ
- کسی
- کچھ
- خلا
- مخصوص
- بڑھتی ہوئی وارداتوں
- Stackabuse
- معیار
- شروع
- ابھی تک
- بند کرو
- ذخیرہ
- کہانی
- کے نظام
- لے لو
- بات
- ٹیکنالوجی
- عارضی
- تجربہ
- ٹیسٹ
- متن
- سے
- کہ
- ۔
- ان
- ان
- تو
- وہاں.
- یہ
- وہ
- بات
- چیزیں
- لگتا ہے کہ
- اس
- وقت
- اوقات
- کرنے کے لئے
- بھی
- منتقلی
- کوشش کی
- بھروسہ رکھو
- کی کوشش کر رہے
- ٹرن
- ٹرننگ
- قسم
- اقسام
- سمجھتا ہے۔
- بدقسمتی سے
- جب تک
- اعلی درجے کی
- us
- استعمال کی شرائط
- استعمال کیا جاتا ہے
- رکن کا
- صارفین
- کا استعمال کرتے ہوئے
- مختلف
- Ve
- بہت
- کی طرف سے
- لنک
- انتظار کر رہا ہے
- چاہتے ہیں
- چاہتے تھے
- تھا
- نہیں تھا
- دیکھ
- راستہ..
- we
- ویب سائٹ
- مہینے
- اچھا ہے
- چلا گیا
- تھے
- کیا
- جب
- جس
- پوری
- کیوں
- وکیپیڈیا
- چاہتے ہیں
- ساتھ
- کام
- کارکن
- کام کر
- گا
- تحریری طور پر
- سال
- تم
- اور
- زیفیرنیٹ