حمله SSL Stripping و روشهای دفاع
این پست درباره SSL Stripping و مکانیزم HSTS هست. HSTS یک Response Header ساده است که باعث میشه مرورگر فقط از HTTPS برای یک دامنه استفاده کنه. همچنین میبینیم چرا HSTS به تنهایی کافی نبود و مرورگرها برای حل مشکل اولین بازدید، HSTS Preload List رو معرفی کردن.
#cyber_security
@techstuff100
این پست درباره SSL Stripping و مکانیزم HSTS هست. HSTS یک Response Header ساده است که باعث میشه مرورگر فقط از HTTPS برای یک دامنه استفاده کنه. همچنین میبینیم چرا HSTS به تنهایی کافی نبود و مرورگرها برای حل مشکل اولین بازدید، HSTS Preload List رو معرفی کردن.
#cyber_security
@techstuff100
❤7👍3🔥2
نتفلیکس چطور ۲۶۰ میلیلون استریم همزمان رو بدون Buffering مدیریت میکنه؟
نتفلیکس فقط به افزایش تعداد سرورها متکی نیست؛ بخش بزرگی از موفقیتش به معماری توزیع محتوا برمیگرده. ویدیوها قبل از اینکه کاربری درخواستشون رو بده، روی هزاران سرور CDN اختصاصی به اسم Open Connect که داخل شبکه ISPها قرار دارن توزیع میشن تا درخواستها از نزدیکترین نقطه پاسخ داده بشن. از طرف دیگه هر کاربر با استفاده از Adaptive Bitrate (ABR) کیفیت مناسب با شرایط لحظهای شبکه خودش رو دریافت میکنه و همین باعث میشه در بیشتر مواقع پخش ویدیو بدون Buffering ادامه پیدا کنه.
مقاله همچنین توضیح میده که مدیریت میلیونها استریم همزمان فقط مسئله زیرساخت نیست؛ بلکه مجموعهای از تصمیمهای مهندسی مثل انتخاب نزدیکترین CDN، کش کردن محتوا، توزیع هوشمند ترافیک، مانیتورینگ مداوم و Failover خودکار باعث میشن حتی در زمان اوج مصرف هم سرویس پایدار باقی بمونه.
لینک مقاله
@techstuff100
نتفلیکس فقط به افزایش تعداد سرورها متکی نیست؛ بخش بزرگی از موفقیتش به معماری توزیع محتوا برمیگرده. ویدیوها قبل از اینکه کاربری درخواستشون رو بده، روی هزاران سرور CDN اختصاصی به اسم Open Connect که داخل شبکه ISPها قرار دارن توزیع میشن تا درخواستها از نزدیکترین نقطه پاسخ داده بشن. از طرف دیگه هر کاربر با استفاده از Adaptive Bitrate (ABR) کیفیت مناسب با شرایط لحظهای شبکه خودش رو دریافت میکنه و همین باعث میشه در بیشتر مواقع پخش ویدیو بدون Buffering ادامه پیدا کنه.
مقاله همچنین توضیح میده که مدیریت میلیونها استریم همزمان فقط مسئله زیرساخت نیست؛ بلکه مجموعهای از تصمیمهای مهندسی مثل انتخاب نزدیکترین CDN، کش کردن محتوا، توزیع هوشمند ترافیک، مانیتورینگ مداوم و Failover خودکار باعث میشن حتی در زمان اوج مصرف هم سرویس پایدار باقی بمونه.
لینک مقاله
@techstuff100
❤14
پذیرش بازخورد
در برنامهنویسی معمولا تنها کار نمیکنیم و بخش زیادی از رشد ما از تعامل با بقیه اعضای تیم اتفاق میفته. یکی از مهمترین جاهایی که این موضوع رو میبینیم Code Review هست. وقتی کسی کدی که نوشتیم رو بررسی میکنه، هدفش پیدا کردن ایراد، بهتر کردن کیفیت کد و انتقال تجربه است؛ نه اینکه توانایی ما رو زیر سوال ببره.
البته دریافت بازخورد همیشه راحت نیست. وقتی چند نفر کدی که نوشتیم رو بررسی میکنن، ممکنه حس کنیم دارن از کار ما ایراد میگیرن، ولی باید یادمون باشه که این بازخورد درباره کد ماست، نه درباره خود ما. حتی بازخوردهای منفی هم معمولا نکتهای برای یاد گرفتن دارن؛ مهم اینه که بخش مفیدش رو پیدا کنیم و از قسمتهایی که فقط باعث ناراحتی میشن عبور کنیم.
اگر هر بازخوردی رو به چشم یک حمله ببینیم، کمکم از تصمیمگیری میترسیم و فرصت رشد رو از دست میدیم. یاد گرفتن از نقدها و استفاده از تجربه دیگران یکی از چیزهایی هست که باعث میشه به مرور مهندس بهتری بشیم.
متن از کتاب Skills of a Successful Software Engineer نوشته Fernando Doglio گرفته شده.
#Skills_of_a_Successful_Software_Engineer
@techstuff100
در برنامهنویسی معمولا تنها کار نمیکنیم و بخش زیادی از رشد ما از تعامل با بقیه اعضای تیم اتفاق میفته. یکی از مهمترین جاهایی که این موضوع رو میبینیم Code Review هست. وقتی کسی کدی که نوشتیم رو بررسی میکنه، هدفش پیدا کردن ایراد، بهتر کردن کیفیت کد و انتقال تجربه است؛ نه اینکه توانایی ما رو زیر سوال ببره.
البته دریافت بازخورد همیشه راحت نیست. وقتی چند نفر کدی که نوشتیم رو بررسی میکنن، ممکنه حس کنیم دارن از کار ما ایراد میگیرن، ولی باید یادمون باشه که این بازخورد درباره کد ماست، نه درباره خود ما. حتی بازخوردهای منفی هم معمولا نکتهای برای یاد گرفتن دارن؛ مهم اینه که بخش مفیدش رو پیدا کنیم و از قسمتهایی که فقط باعث ناراحتی میشن عبور کنیم.
اگر هر بازخوردی رو به چشم یک حمله ببینیم، کمکم از تصمیمگیری میترسیم و فرصت رشد رو از دست میدیم. یاد گرفتن از نقدها و استفاده از تجربه دیگران یکی از چیزهایی هست که باعث میشه به مرور مهندس بهتری بشیم.
متن از کتاب Skills of a Successful Software Engineer نوشته Fernando Doglio گرفته شده.
#Skills_of_a_Successful_Software_Engineer
@techstuff100
❤21👍4
همه چیز درباره پکیج Module Federation
توی این ویدیو، بهصورت کامل با پکیج Module Federation آشنا میشیم و یاد میگیریم چطور یه پروژه کامل باهاش بسازیم. این ویدیو کمکتون میکنه با معماری میکروفرانتاند هم آشنا بشین و ببینین چطور اپلیکیشنهای مختلف میتونن بهصورت مستقل توسعه داده بشن و در نهایت توی یه اپلیکیشن روت (host) کنار هم لود و نمایش داده بشن.
ویدئوی یوتوب:
https://www.youtube.com/watch?v=bhUZVxr4mP0&list=PL1bBcWODwsLMYe8Gor4PDwT5U5CK_S36x&index=7
اگه میخواین درباره میکروفرانتاند بیشتر بدونین، این پلیلیست میتونه کمککننده باشه:
https://www.youtube.com/playlist?list=PL1bBcWODwsLMYe8Gor4PDwT5U5CK_S36x
#MicroFrontend
@techstuff100
توی این ویدیو، بهصورت کامل با پکیج Module Federation آشنا میشیم و یاد میگیریم چطور یه پروژه کامل باهاش بسازیم. این ویدیو کمکتون میکنه با معماری میکروفرانتاند هم آشنا بشین و ببینین چطور اپلیکیشنهای مختلف میتونن بهصورت مستقل توسعه داده بشن و در نهایت توی یه اپلیکیشن روت (host) کنار هم لود و نمایش داده بشن.
ویدئوی یوتوب:
https://www.youtube.com/watch?v=bhUZVxr4mP0&list=PL1bBcWODwsLMYe8Gor4PDwT5U5CK_S36x&index=7
اگه میخواین درباره میکروفرانتاند بیشتر بدونین، این پلیلیست میتونه کمککننده باشه:
https://www.youtube.com/playlist?list=PL1bBcWODwsLMYe8Gor4PDwT5U5CK_S36x
#MicroFrontend
@techstuff100
❤7👍4👏3
طراحی سیستم: Multipart Upload
این پست درباره Multipart Upload هست که برای آپلود فایلهای بزرگ استفاده میشه و باعث میشه هم در برابر قطعی شبکه مقاومتر باشیم، هم بتونیم با آپلود همزمان بخشهای مختلف، زمان آپلود رو کمتر کنیم.
#system_design_interview_volume_2
@techstuff100
این پست درباره Multipart Upload هست که برای آپلود فایلهای بزرگ استفاده میشه و باعث میشه هم در برابر قطعی شبکه مقاومتر باشیم، هم بتونیم با آپلود همزمان بخشهای مختلف، زمان آپلود رو کمتر کنیم.
#system_design_interview_volume_2
@techstuff100
❤9👍2
یه نکته کوچیک درباره XSS وجود داره که خیلیا موقع تست امنیت یادشون میره. بعضی وقتا context ای که ورودی کاربر توش قرار میگیره، یه اتریبیوت از تگ HTML هست. بخصوص اگه اون اتریبیوت خودش قابلیت اجرای کد داشته باشه. مثلا تگ a رو در نظر بگیرید. اگه بتونیم مقدار href رو کنترل کنیم، میتونیم به جای یه URL معمولی از پروتکل javascript استفاده کنیم.
وقتی کاربر روی این لینک کلیک کنه، به جای رفتن به یه صفحه، کد جاوااسکریپت داخل href اجرا میشه. تو دنیای واقعی به جای alert معمولا کدی میبینیم که کوکی سرقت میکنه، درخواست به یه سرور بیرونی میفرسته یا سشن کاربر رو هایجک میکنه.
نکته مهم اینه که فیلتر کردن فقط تگهای خطرناک مثل script کافی نیست. باید مراقب اتریبیوتهایی مثل href، src یا حتی event handlerها هم بود، چون هرکدوم میتونن یه مسیر جایگزین برای اجرای کد باز کنن.
#cyber_security #xss
@techstuff100
وقتی کاربر روی این لینک کلیک کنه، به جای رفتن به یه صفحه، کد جاوااسکریپت داخل href اجرا میشه. تو دنیای واقعی به جای alert معمولا کدی میبینیم که کوکی سرقت میکنه، درخواست به یه سرور بیرونی میفرسته یا سشن کاربر رو هایجک میکنه.
نکته مهم اینه که فیلتر کردن فقط تگهای خطرناک مثل script کافی نیست. باید مراقب اتریبیوتهایی مثل href، src یا حتی event handlerها هم بود، چون هرکدوم میتونن یه مسیر جایگزین برای اجرای کد باز کنن.
#cyber_security #xss
@techstuff100
❤6👏3
مقالاتی که اخیرا خوندم (قسمت اول)
🔺 XSS in hidden input fields [لینک]
🔺 How I Actually Prepare for Coding Interviews [لینک]
🔺Design Google Docs Like a Senior Engineer [لینک]
🔺 مسیر ساخت WAF در ترب [لینک]
🔺 رایتآپ تصاحب حساب کاربری از زیرِ بغلِ مار [لینک]
🔺 I Used Git Wrong for Years [لینک]
🔺 The Team Matching Round: The Interview Where You Should Be Doing the Interviewing [لینک]
#recent_reads
@techstuff100
🔺 XSS in hidden input fields [لینک]
🔺 How I Actually Prepare for Coding Interviews [لینک]
🔺Design Google Docs Like a Senior Engineer [لینک]
🔺 مسیر ساخت WAF در ترب [لینک]
🔺 رایتآپ تصاحب حساب کاربری از زیرِ بغلِ مار [لینک]
🔺 I Used Git Wrong for Years [لینک]
🔺 The Team Matching Round: The Interview Where You Should Be Doing the Interviewing [لینک]
#recent_reads
@techstuff100
👍9
هشتگهای مفید برای دسترسی راحتتر به مطالب
🔺 کتاب System Design Interview volume 1:
#system_design_interview_volume_1
🔺 کتاب System Design Interview volume 2:
#system_design_interview_volume_2
🔺 کتاب Skills of a Successful Software Engineer:
#Skills_of_a_Successful_Software_Engineer
🔺 کتاب Building Micro-Frontends:
#Building_Micro_Frontends
🔺 کتاب A Philosophy of Software Design:
#A_Philosophy_of_Software_Design
🔺 میکرفرانتاند:
#MicroFrontend
🔺 امنیت:
#cyber_security #xss
🔺 ا PWA:
#pwa
🔺 آخرین مقالاتی که خوندم:
#recent_reads
🔺 ریاکت:
#react
🔺 تایپاسکریپت:
#typescript
🔺 جاوااسکریپت:
#javascript
🔺 طراحی سیستم:
#system_design
🔺 ا HTML:
#html
🔺 ا CSS:
#css
🔺 گیت:
#git
🔺 ا NPM:
#npm
🔺 مهندسی نرمافزار
#software_engineering
@techstuff100
🔺 کتاب System Design Interview volume 1:
#system_design_interview_volume_1
🔺 کتاب System Design Interview volume 2:
#system_design_interview_volume_2
🔺 کتاب Skills of a Successful Software Engineer:
#Skills_of_a_Successful_Software_Engineer
🔺 کتاب Building Micro-Frontends:
#Building_Micro_Frontends
🔺 کتاب A Philosophy of Software Design:
#A_Philosophy_of_Software_Design
🔺 میکرفرانتاند:
#MicroFrontend
🔺 امنیت:
#cyber_security #xss
🔺 ا PWA:
#pwa
🔺 آخرین مقالاتی که خوندم:
#recent_reads
🔺 ریاکت:
#react
🔺 تایپاسکریپت:
#typescript
🔺 جاوااسکریپت:
#javascript
🔺 طراحی سیستم:
#system_design
🔺 ا HTML:
#html
🔺 ا CSS:
#css
🔺 گیت:
#git
🔺 ا NPM:
#npm
🔺 مهندسی نرمافزار
#software_engineering
@techstuff100
❤9
Tech Stuff pinned «هشتگهای مفید برای دسترسی راحتتر به مطالب 🔺 کتاب System Design Interview volume 1: #system_design_interview_volume_1 🔺 کتاب System Design Interview volume 2: #system_design_interview_volume_2 🔺 کتاب Skills of a Successful Software Engineer: #Skills_of…»
تو یک توسعهدهنده هستی!
یه چیزی هست که خیلی از ما خصوصا وقتی تازهکاریم یا فقط یه شرکت رو تجربه کردیم، بهش دقت نمیکنیم: تکنولوژیای که الان باهاش کار میکنیم، فقط یه ابزاره، نه هویت ما. خیلی وقتا شرکتها ما رو توی یه قالب میذارن، مثلا میگن تو frontend developer هستی، پس با جاوااسکریپت بمون و اگه این قالب رو باور کنیم، ناخودآگاه از یادگیری چیزای دیگه دور میشیم.
توی برنامهنویسی اگه فقط با React کار کرده باشی، فکر میکنی همهچی رو باید با reactive programming حل کرد. اگه فقط جاوا بلد باشی، حتی سادهترین مسئله رو هم پیچیده حل میکنی. مشکل از زبان نیست، از اینه که خودمون رو محدود به یه ابزار کردیم.
خود نویسنده هم همینطور بود. سالها با PHP کار کرد، بعد Ruby، بعد Python، بعد Node.js. وقتی از این زبان به اون زبان پرید، فهمید همهشون یه چیزای مشترک دارن. اونجا بود که فهمید قضیه سر زبان نیست، سر مفاهیم انتزاعی پشتشونه. هدف این نیست که یه Java developer محشر بشی، هدف اینه یه توسعهدهنده خوب بشی، بدون هیچ برچسبی.
(1/2)
#Skills_of_a_Successful_Software_Engineer
@techstuff100
یه چیزی هست که خیلی از ما خصوصا وقتی تازهکاریم یا فقط یه شرکت رو تجربه کردیم، بهش دقت نمیکنیم: تکنولوژیای که الان باهاش کار میکنیم، فقط یه ابزاره، نه هویت ما. خیلی وقتا شرکتها ما رو توی یه قالب میذارن، مثلا میگن تو frontend developer هستی، پس با جاوااسکریپت بمون و اگه این قالب رو باور کنیم، ناخودآگاه از یادگیری چیزای دیگه دور میشیم.
توی برنامهنویسی اگه فقط با React کار کرده باشی، فکر میکنی همهچی رو باید با reactive programming حل کرد. اگه فقط جاوا بلد باشی، حتی سادهترین مسئله رو هم پیچیده حل میکنی. مشکل از زبان نیست، از اینه که خودمون رو محدود به یه ابزار کردیم.
خود نویسنده هم همینطور بود. سالها با PHP کار کرد، بعد Ruby، بعد Python، بعد Node.js. وقتی از این زبان به اون زبان پرید، فهمید همهشون یه چیزای مشترک دارن. اونجا بود که فهمید قضیه سر زبان نیست، سر مفاهیم انتزاعی پشتشونه. هدف این نیست که یه Java developer محشر بشی، هدف اینه یه توسعهدهنده خوب بشی، بدون هیچ برچسبی.
(1/2)
#Skills_of_a_Successful_Software_Engineer
@techstuff100
❤8👍2🔥1