یوشا

دست نوشته ها و تجربیات شخصی

یوشا

دست نوشته ها و تجربیات شخصی

شهید دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم آنکس که تخصص ندارد و کاری را می پذیرد بی تقواست!

طبقه بندی موضوعی
تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

برخی از مهمترین معیارهای انتخاب زبان برنامه نویسی: Java, .Net, PHP

(برای بزرگنمایی کلیک کنید)

۰ نظر ۰۳/۰۶/۰۹
یوشا آل ایوب

یکی از مهمترین ویژگی‌های جدید در PHP 8.0، کامپایلر JIT است. JIT می‌تواند با کامپایل کردن و ذخیره‌ کردن کامل یا بخش‌هایی از اسکریپت PHP، به کد ماشین CPU، عملکرد را بسیار بهبود بخشد و به طور مستقیم کد ماشین را اجرا کند، بطوریکه Zend VM و سربار ناشی از عملیات و فرایندهای آنرا دور می‌زند و نادیده می‌گیرد.

JIT ترکیبی از مفسران traditional و کامپایلرهای AoT است. این مدل ترکیبی/Hybrid، مزایا و معایب هر دو مفسر و کامپایلر را به ارمغان می‌آورد.
پیاده‌سازی PHP JIT تنها با تلاش‌های شگفت‌انگیز Dmitry Stogov در چند سال اخیر، ارزش بحث، اجرا و آزمایشات را پیدا کرده است.

این مقاله در مورد benchmark ها، نحوه‌ی کار JIT، امکانات و گزینه‌های پیکربندی در php.ini می باشد.

دانلود مقاله PDF

۰ نظر ۰۳/۰۳/۱۷
یوشا آل ایوب

پارامترهای پیشنهادی جهت Hardening هسته لینوکس توسط cmdline موقع boot-time و توسط sysctl موقع run-time.
 

  • توسط cmdline موقع boot-time:
vga=normal mds=full rodata=on mitigations=auto,nosmt page_alloc.shuffle=1 init_on_alloc=1 init_on_free=1 hardened_usercopy=1 iommu.strict=1 iommu.passthrough=0 randomize_kstack_offset=1 pti=on iommu=force tsx=off vsyscall=xonly vdso32=0 debugfs=on

نکته: این پارامترهارو باید به برنامه bootloader تون بدید:

  • اگر بوت لودر Grub هستش، داخل فایل /boot/grub/grub.cfg و در جلوی متغیر GRUB_CMDLINE_LINUX_DEFAULT باید قرار بگیرن.
  • اگر بوت لودر eLiLo هستش، داخل فایل /boot/EFI<OS>/elilo.conf و در جلوی متغیر append باید قرار بگیرن.

توضیحات و مستندات Kernel command-line parameters

 

  • توسط برنامه sysctl موقع run-time:
sysctl -w net.core.bpf_jit_harden="2"
sysctl -w kernel.dmesg_restrict="1"
sysctl -w kernel.perf_event_paranoid="3"
sysctl -w kernel.kexec_load_disabled="1"
sysctl -w user.max_user_namespaces="0"
sysctl -w dev.tty.ldisc_autoload="0"
sysctl -w kernel.unprivileged_bpf_disabled="1"
sysctl -w kernel.kptr_restrict="2"
sysctl -w dev.tty.legacy_tiocsti="0"
sysctl -w vm.unprivileged_userfaultfd="0"
sysctl -w fs.protected_symlinks="1"
sysctl -w fs.protected_hardlinks="1"
sysctl -w fs.protected_fifos="2"
sysctl -w fs.protected_regular="2"
sysctl -w fs.suid_dumpable="0"
sysctl -w kernel.yama.ptrace_scope="3"
sysctl -w kernel.randomize_va_space="2"

نکته: برای اعمال این تنظیمات به کاربر root یا دسترسی sudo نیاز دارید.

توضیحات مقادیر موجود در /proc/sys

۰ نظر ۰۲/۱۲/۱۶
یوشا آل ایوب

کاملترین چک لیستی که در هیچ مرکز خدماتی خودرو و مکانیکی وجود نداره!

 

دانلود فایل PDF

 

هر بار که سرویسی انجام میدید، در ردیف سرویس مربوطه، کادر کیلومتر کنونی یا سال جاری رو تیک میزنید.

۰ نظر ۰۲/۱۱/۱۷
یوشا آل ایوب

برای بزرگنمایی کلیک کنید

اینفوگراف شاخه های جرم یابی دیجیتال

 

برای بزرگنمایی کلیک کنید

اینفوگراف مراحل انجام جرم یابی دیجیتال

۰ نظر ۰۲/۰۴/۱۹
یوشا آل ایوب
۰ نظر ۰۱/۱۲/۱۵
یوشا آل ایوب

تعریف جرمیابی دیجیتال: به مجموعه فرایند جمع آوری، ارزیابی و ارائه مدارک جمع آوری شده از تجهیزات دیجیتال گفته میشود.

این مدارک دیجیتالی از کامپیوترها، تلفن های همراه، دستگاه های اینترنت اشیا و سرورها به دست می آیند. جرمیابی دیجیتال به حل پرونده های پیچیده ای که بر مدارک دستگاه های دیجیتالی تکیه دارند کمک می کند.

این حوزه کاری زیر مجموعه امنیت سایبری می باشد و به فرد متخصصی که در این حوزه کار میکند متخصص جرمیابی دیجیتال و واکنش به حوادث گفته میشود.

(به انگلیسی Digital Forensics and Incident Response (DFIR))

 

برای بزرگنمایی کلیک کنید

۰ نظر ۰۱/۰۹/۰۸
یوشا آل ایوب

- کانفیگ hardening شده هسته Linux برای محیط production x64:

(قبل از کامپایل هسته Linux بهمین شکل پارامترهارو داخل فایل .config موجود در سورس لینوکس تون اعمال کنید)

۱ نظر ۰۱/۰۶/۰۱
یوشا آل ایوب

۱- اینکه Exception ها، استثنا هستن! فقط باید از اونها برای مواجه با مشکلات غیر قابل پیش بینی استفاده کنید.

۲- هرگز از Exception برای کنترل جریان/flow نرم افزار استفاده نکنید. اینکار باعث میشه که نتونید مسیر اجرای کد رو دنبال کنید و پرفورمنس نرم افزار هم کاهش پیدا میکنه. (مثل دستور GoTo که در برخی زبانها وجود داره)

۳- هرگز شی Exception رو بعنوان مقدار و خروجی return نکنید.

۴- Exception فقط باید حاوی اطلاعات رخداد/رویداد باشد و نباید حاوی پارامترها(یا اطلاعات اضافی) باشه که روی نحوه انجام و منطق داخل بلوک catch تاثیر بذاره.

۵- هرگز Exception های زیرساختی/داخلی مثل SystemException, OutOfMemoryException, StackOverflowException, ComException, ExecutionEngineException, NullReferenceException, IndexOutOfRangeException رو پرتاب نکنید.

۶-  برای حالت debug نرم افزار Exception پرتاب نکنید.

۷- داخل متد toString() کلاس هاتون Exception پرتاب نکنید. اینکار عمل debugging رو سخت می کنه. (از این متد برای debug کردن استفاده میشه)

۸- داخل توابع مقایسه ای(true/false) و equal هرگز Exception پرتاب نکنید.

۹- هرگز StackOverflowException و OutOfMemoryException رو catch نکنید. اینها غیرقابل کنترل و هندل شدن هستن.

۱۰- همیشه Exception های سطح پایین و general رو به Exception های ریز تر و خاص تر wrap کنید. مثل:

NotFoundException -> FileNotFoundException/URLNotFoundException

۱۱- همیشه عملیات پاکسازی/Cleanup رو در بلوک finally قراربدید و نه در بلوک catch. بلوک finally همیشه اجرا میشه اما بلوک catch فقط هنگام رخداد Exception اجرا میشه.

۱۲- فقط باید زمانی Exception رو catch کنید که میتونید بخوبی مشکل رو handle و recovery کنید. درغیراینصورت بهتره Exception رو catch نکنید. (چون درواقع صرفا مخفیش کردید)

۱۳- بهتره که هنگام timeout شدن یک عملیات، TimeoutException پرتاب کنید نه اینکه توسط if/else اونرو handle کنید.

۱۴- در بلوک finally هرگز Exception پرتاب نکنید.

۱۵- صرفا Log و rethrow کردن یک Exception در بلوک catch بمعنای handle کردنش نیست.

۱۶- هرگز Exception مادر/عمومی مثل Exception رو throw نکنید.

۱۷- برای wrap کردن Exception همیشه از کلاس مادر Exception یا RuntimeException ارث بری کنید.

18- بهتره در بلوک catch از if/else استفاده نکنید تا از ایجاد branch های تودرتو جلوگیری بشه.

19- همیشه پیامهای Exception رو در فایلی log کنید.

20- بجای throw ex از throw استفاده کنید تا پیامهای stacktrace قبلی و کنونی موجود در ex حفظ بشن.

catch(Exception ex)
{
   throw;
}

 

۰ نظر ۰۱/۰۳/۱۸
یوشا آل ایوب

 

بلخره بعد از مدت ها گنولینوکس Slackware نسخه 15 stable ترخیص شد!

 

  • تغییرات مهم

- Kernel 5.15.19 LTS

- Python 3.9 ,BASh 5.1, LLVM 13, GCC 11.2, PHP 7.4

- XFCE 4.16, KDE 5.23, X Server 1.20

- GRUB 2.0.6, OpenSSL 1.1.1m, BinUtils 2.37, GNU C lib 2.33

- تغییر درایورها

- پشتیبانی بهتر از اینترفیس NVMe و بسترهای نوع UEFI

- جایگزین شدن Elogind بجای ConsoleKit2

- اضافه شدن FFmpeg و Lame

- جایگزین شدن postfix بجای sendmail

- جایگزین شدن Dovecot بجای pop3d و imapd

- جایگزین شدن iproute2 بجای net-tools

- اضافه شدن Qt 5.15 و GTK4

- اضافه شدن تعدادی User/Group جدید

- حذف و اضافه شدن تعداد زیادی package

و بسیاری بهینه سازی و بروز رسانی های دیگه...

 

  •  وبسایت

http://www.slackware.com

 

  • دانلود

32bit

https://mirrors.slackware.com/slackware/slackware-iso/slackware-15.0-iso

https://ftp.osuosl.org/pub/slackware-iso/slackware-15.0-iso

64bit

https://mirrors.slackware.com/slackware/slackware-iso/slackware64-15.0-iso

https://ftp.osuosl.org/pub/slackware-iso/slackware64-15.0-iso

64bit live

https://slackware.nl/slackware/slackware-live/slackware64-15.0-live

 

  • مستندات

https://docs.slackware.com

۰۰/۱۱/۱۶
یوشا آل ایوب