Code & Life
83 subscribers
24 photos
2 videos
1 file
31 links
اینجا درباره کدنویسی ، چیزهایی که یاد میگیرم و مطالعه میکنم و روزمره‌هام می‌نویسم.

https://erfuuan.github.io/
Download Telegram
مطلب جالبی بود. خلاصه ش رو مینویسم
⏱️ حمله‌ی زمانی (Timing Attack) تو Node.js چیه و چطوری جلوش رو بگیریم؟

Timing Attack یعنی هکر فقط با اندازه‌گیری زمان پاسخ سرور، می‌تونه حدس بزنه چه بخش‌هایی از یه رمز یا توکن درسته!
مثلاً وقتی مقایسه‌ی رمز از چپ به راست انجام میشه، سرور همون‌جا که mismatch پیدا کنه، متوقف میشه. این باعث میشه زمان پاسخ متغیر باشه و از همین زمان، اطلاعات لو بره.
مثال:
if (input === secretToken) {
// ...
}

مقایسه‌ی بالا variable-time هست و می‌تونه اطلاعات رمز رو لو بده.
راه‌حل‌ها 🔐
۱. استفاده از timingSafeEqual
import { timingSafeEqual } from 'node:crypto';

const a = Buffer.from(userInput, 'utf8');
const b = Buffer.from(secret, 'utf8');

if (a.length === b.length && timingSafeEqual(a, b)) {
// امنه
}

مقایسه‌ی ثابت زمان، فرق نمی‌کنه رشته چقدر شباهت داشته باشه.
🧂 ۲. استفاده از هش‌های کند مثل bcrypt یا scrypt

با این کار، brute-force کردن رمز زمان‌بر میشه.
🔄 ۳. اجتناب از شرط‌های مبتنی بر اطلاعات حساس
if (password.startsWith('admin')) {
// خطرناک!
}

این مدل شرط‌ها هم لو میدن که رمز از کجا شروع شده.
🕒 ۴. تاخیر ثابت بذار برای همه‌ی پاسخ‌ها
const delay = 200; // ms
const elapsed = Date.now() - start;
await new Promise(r => setTimeout(r, Math.max(0, delay - elapsed)));
خیلی وقته اینجا چیزی ننوشتم
Code & Life
https://www.youtube.com/watch?v=_K-eupuDVEc
این ویدیو یه ماک اینترویو عه که توش یکی از Software Engineer گوگل شروع میکنه دیزاین کردن پروداکت Spotify . نکات جالبی داره ببینین
1
اخیرا شروع کردم خوندن این کتاب. نکاتی که حس میکنم جالب و مهم هس رو میزارم اینجا
👏1
system_design_1_fa.pdf
10.7 MB
اینم فایل خود کتاب
👍1👎1
پریروز توی مسابقه ict یه چالشی داشتم که نیاز بود insert و update روی دیتابیس رو capture کنم.
یکی از بچه ها ابزار debezium رو معرفی کرد که دقیقا مناسب همین کار هست. میاد change های روی دیتابیس رو با توجه به کانفیگی که بهش میدین produce میکنه روی یه تاپیک کافکا
Code & Life
https://github.com/erfuuan/logixon
اینم کدی که برای اون پروژه نوشتم
Code & Life
https://github.com/ashishps1/awesome-system-design-resources
داشتم درباره سیستم دیزاین مطالعه میکردم که به این ریپوزیتوری توی گیتهاب برخوردم
داخلش توضیح داده که اگر تازه شروع کردین به خوندن این لینک کمک میکنه این ۳۰ کانپست های اولیه رو سریع یه مرور کنین که مطالب رو بهتر متوجه بشین :‌
خاکستری، خاکستری، خاکستری
صبح، مِه، باران
اَبر، نگاه، خاطره
در من ترانه‌ای نبود، تو خواندی
در من آینه‌ای نبود، تو دیدی
ریشه‌ای بودم در خوابِ خاک‌های مُتُبَرک
بی‌باران، در نگاه‌ تو سبز شدم
برق از چشمانم برخواست، نگاهم بارانی شد
گونه‌هایت خیسِ باران، چشم‌هایت آفتابی
گرگ‌ها می‌زایند، بره‌ها را دریابیم
تو، با چشمانت‌ مرا بنواز
چوبدست چوپانیم سلاحی کارگر خواهد شد
بعد از جنگ، با چوبدستم
انجیر‌های تازه را برای تو خواهم چید
با تو خواهم ماند، با تو خواهم خواند
و تورا در بُهتِ آفتابی‌ات خواهم بوسید
اگر اَبر‌ها بگذارند…
1