Web_programming
1.14K subscribers
354 photos
14 videos
125 files
1.22K links
Sharif web programming
If you have any questions, please feel free to ask(@yumcoder)
Download Telegram
خجسته باد
در شرایطی که مقیاس پذیری بالایی نیاز است پشتیبانی کنید تنظیمات شبکه و لایه tcp نیز باید انجام دهید یکی از این تنظیمات مربوط به time_wait است. در لینک زیر میتوانید بیشتر درباره ان بخوانید
https://vincent.bernat.ch/en/blog/2014-tcp-time-wait-state-linux
طرح این تصویر میگه فقط با کمک css این تصویر را ایجاد کرده

https://github.com/cyanharlow/purecss-francine
در معماریهای توزیع شده ردگیری (یعنی برای پاسخ به یک درخواست کاربر کدام سرویسها و در کدام سرورها با هم همکاری کردن تا جواب را آمده کنند) و اندازه گیری کارایی به منظور مشخص کردن گلوگاه‌ها کار مهمی است یکی از ابزارهای رایج برای این منظور در لینک زیر آورده شده است

https://opencensus.io/
رمزگذاری را جدی بگیرید :)
فرض کنید در یک برنامه از کاربر نام و رمز را دریافت می کنید و در صورت درستی وارد برنامه می شوید. مراحل این کار معمولا بدین شکل است:
۱- نام کاربری را وارد کنید
۲- رمز عبور را وارد کنید
۳- رمز وارد شده توسط کاربر را رمزنگاری میکنید
۴- حاصل رمزنگاری مرحله ۳ را با رمز ذخیره شده و رمزنگاری شده (درون پایگاه داده و یا هر جایی که فیلا دخیره کرده اید) مقایسه می کنید و اگر درست بود ادامه ....
۴- اگر نادرست بود به تعداد محدودی اجازه وارد کردن رمز را می دهید و مثلا پس از ۳ تلاش برای مدت ۱ ساعت در لیست سیاه قرار می گیرد
و....

این الگوریتم نیز در دو شرایط ممکن است مخاطرات امنیتی داشته باشد! و بهتر است پس از دریافت رمز از کاربر بدین شکل عمل کنید
۱- مانند قبل
۲- مانند قیل
۳- رمزنگاری رمز گرفته شده در مرحله دو
۴- مرحله بسیار مهم —> پاک کردن رمز گرفته شده در مرحله دو از حافظه
۵- ادامه مانند قبل

چرا؟
۱- ممکن است برنامه crash کند و یک dump فایل برای ان بوجود آید و رمز وارد شده توسط کاربر بدین شکل expose میشود
۲- در شرایط swap کردن توسط سیستم عامل امکان expose شدن رمز کاربر نیز وجود دارد

حالا واقعا باید اینقدر سخت بگیریم؟ بله :)

در لینک زیر خیلی مختصر یک برنامه نمونه آورده ام از کتاب برنامه نویسی لینوکس که قبلا معرفی کردم

https://telegra.ph/Erase-the-unencrypted-password-from-memory-11-27
وقتی داده‌ها به خوبی می‌توانند حرف بزنند!