Syntax | سینتکس – Telegram
Syntax | سینتکس
http://meet.google.com/mip-pegn-xdt لینک میت موضوع میت: راهنمایی مسیر برای یک برنامه نویس تازه کار لینک کانال ارائه دهنده میت: https://news.1rj.ru/str/Code_Crafters #میت @khat_academy
پیرو بحث راهنمایی هایی برای تازه کار ها ( و افراد در حال کار در هر سطحی) رفرنس‌هایی رو قرار میدیم براتون. از جمله مقالات مفید و نظرات اشخاص در استک های مختلف، رود مپ (‌نقشه راه) و توصیه ها.

شخصا برای رود مپ وبسایتی کامل تر از
https://roadmap.sh
ندیدم که چیزایی که نوشته رو توضیح هم‌ داده باشه (کلیک‌ کنید روشون در نمودار بهتون توضیحات، آموزش‌و مقالات بیشتری میده)، برای همه استک ها و زبان ها رودمپ قرار دادند.

معماری و طراحی نرم افزار:
https://roadmap.sh/software-architect
https://roadmap.sh/software-design-architecture

برای داکر و کانتینر ها:
https://roadmap.sh/docker

برای فرانت اند:
https://roadmap.sh/frontend

برای بک اند:
https://roadmap.sh/backend

برای Asp.net Core:
https://roadmap.sh/aspnet-core

برای پایتون:
https://roadmap.sh/python

برای DevOps:
https://roadmap.sh/devops

برای DBA و دیتابیس:
https://roadmap.sh/sql
https://roadmap.sh/mongodb
https://roadmap.sh/postgresql-dba
https://roadmap.sh/graphql

برای امنیت و Cyber Security:
https://roadmap.sh/cyber-security

و یک بخش قشنگ‌دیگه هم درباره Beat Practice ها داره. مثلا best practice های طراحی api، دیتابیس، کلاد ..
https://roadmap.sh/best-practices

[mrgrayhat] -> @Code_Crafters

@khat_academy
10
تو این قسمت از khat weekly، مهمون ما مبینا حاجی محمدی هستش.

تخصصش NLP Research است و بصورت ریموت تو شرکت paperscore واقع در تگزاس آمریکا مشغول به کاره.

قراره درباره هوش مصنوعی و آینده شغلیش صحبت کنه.

پیشنهاد میکنم حتما این قسمتو دنبال کنید چون مبینا قراره کلی نکات مهم درباره ی هوش مصنوعی بهمون بگه

همچنین هر سوالی دارید، تو کامنت بپرسید تا توی پادکست دربارش صحبت کنیم

تاریخ پخش:
یکشنبه ۹ مهر ساعت ۸ شب

#podcast #weekly

@khat_academy
🔥92👎1
لوگو جدیدمون چطوره ؟

خوبه 👍
بده 👎
👍34👎6👏1😍1
Forwarded from Alireza
انقد لوگو خوب بود این خانم های زیبا طرفدارش شدن روی ماگ و لباس چاپش کزدن
🎉11😁9
JWT

چند روزه پستای تخصصی طور نذاشتم.
امروز قراره نحوه پیاده سازی Jwt Authentication بصورت حرفه ای بررسی کنیم.

اول از همه یه سری مفاهیم و توضیحات درباره jwt رو مرور میکنیم بعدش بصورت عملی پیاده سازی میکنیم.

#JWT

@khat_academy
🔥9👍2
Channel name was changed to «Khat»
JWT (Json Web Token):

یک استاندارد برای ایجاد توکن‌های دیجیتاله که تو فرایند احراز هویت و تأیید اعتبار در برنامه‌ها و سیستم‌های وب استفاده می‌شه. JWT یک توکن کم حجم و ایمن هستش که اطلاعاتی رو تو خودش ذخیره می کنه و به صورت امضاشده به عنوان یک رشته Base64 ارسال می کنه.

چرا بصورت Base64 ارسال میشه؟

1. قابلیت انتقال توی فرمت متنی:
رشته‌های Base64 متشکل از کاراکترهای الفبای بیتی هستن که می‌تونن بدون مشکل در فرمت‌های متنی ارسال و ذخیره بشن. باعث می‌شه که توکن JWT بدون نیاز به فرمت‌های خاص بتونه تو درخواست‌ها و پاسخ‌های HTTP ارسال بشه.

2. حجم کمتر:
با استفاده از رشته‌های Base64 برای نمایش سربرگ، حجم توکن JWT کمتر می شه. چون رشته‌های Base64 نسبت به داده اصلی کوچیک ترن. این کاهش حجم باعث می‌شه توکن JWT به صورت کم‌حجم‌تری قابل انتقال و ذخیره بشه.

آیا Base64 بودن امنیت توکنو تضمین می کنه؟
استفاده از Base64 هیچ تأثیری تو امنیت توکن نداره. امضای دیجیتال توکن تو قسمت امضا (Signature) صورت می‌گیره و اصالت و صحت سربرگ توسط امضا بررسی می‌شه. بنابراین، حتی اگر سربرگ در قالب Base64 لو بره، امنیت توکن تضمین می‌شه.

#JWT

@khat_academy
👍72
Refresh Token, Access Token

تو مکانیزم JWT، معمولاً از دو بخش توکن استفاده می‌شه که به عنوان "Refresh Token" و "Access Token" شناخته می‌شن. هر کدوم از این دو توکن نقش و وظیفه‌های مختص خودشو تو فرآیند احراز هویت و مدیریت دسترسی‌ها دارن.

1. Refresh Token:
رفرش توکن، توکنی است که به کاربر در زمان احراز هویت و داده میشه. این توکن معمولاً دارای مدت زمان اعتبار بلندتری نسبت به Access Token هستش و معمولاً توسط سرور صادر می‌شه. وظیفه Refresh Token در تجدید و تمدید Access Token هستش. به عبارت دیگه، هنگامی که Access Token منقضی می‌شه، کاربر می‌تونه Refresh Token رو به سرور ارسال کنه تا یدونه Access Token جدید دریافت کنه بدون نیاز به مجدداً وارد کردن اطلاعات احراز هویت.

2. Access Token:
اکسس توکن، توکنی است که بعد از احراز هویت کاربر به او اختصاص داده می‌شه و برای دسترسی به منابع و انجام عملیات مختلف استفاده می‌شه. این توکن معمولاً دارای مدت زمان اعتبار کوتاه‌تری نسبت به رفرش توکن هستش.
اکسس توکن برای هر درخواست از طریق هدر یا پارامترهای درخواست ارسال می‌شه و سرور با بررسی اعتبار و صحتش، دسترسی کاربر به منابع رو تأیید می‌کنه.

دو دلیل برای اینکه چرا دو نوع توکن داریم؟

1. امنیت بیشتر:
استفاده از توکن Access با مدت زمان اعتبار کوتاهتر، مزیت امنیتی داره. در صورتی که توکن Access در دسترس یک اتکر قرار بگیره، مدت زمانی که می‌تونه ازش استفاده کنه محدوده و احتمال سوءاستفاده کم میشه.

2. مدیریت دسترسی بهتر: با استفاده از دو نوع توکن، مدیریت دسترسی‌ها بهتر امکان‌پذیر می‌شه. با تنظیم مدت زمان اعتبار کوتاهتر برای Access Token، کاربران تو فاصله زمانی کوتاهتری بین درخواست‌ها مجدداً احراز هویت میشن و دسترسی خودشونو تایید می کنن. این به سرور اجازه می‌ده تا در مدت زمان کمتری درخواست‌های کاربران رو بررسی کنه و عملکرد سیستم رو بهبود ببخشه.

شاید از خودتون بپرسید خب اگه رفرش توکن دست هکر بیوفته چی؟
اینجاس که بحث پیاده سازی سیستم احراز هویت امن پیش میاد. یعنی ما باید بررسی کنیم ببینیم شخصی که داره درخواست می ده واقعا خودشه یا نه!

#JWT

@khat_academy
👏8👍2😱2
ساختار JWT

از سه بخش تشکیل شده: سربرگ (Header)، بدنه (Payload) و امضا (Signature). سربرگ شامل اطلاعات مربوط به نوع توکن و الگوریتم امضا هستش، بدنه حاوی اطلاعات مفیدی است که برنامه‌ها می‌تونن ازش استفاده کنن.
امضا برای تأیید اعتبار توکن استفاده می‌شه(امضا رو فقط خودمون می دونیم چیه و اعتبار توکن هم بر اساس امضا می سنجیم).

Header.Payload.Signature

همونطور که تو عکس مشخصه. قسمت header نوع توکن مشخص شده با الگوریتم امضا.

قسمت payload اطلاعاتی که نیازه بهش توکن داشته باشه. مثلا تاریخ انقضا و اینکه توکن برای چه شخصی صادر شده. تو این قسمت ما می تونیم اطلاعات بیشتری رو ذخیره کنیم برای مثال:
last_name, username, user_id ...
خلاصه می تونیم اطلاعات مورد نیازمونو قرارش بدیم تا نیاز نباشه هربار از دیتابیس بگیریم. در نهایت میایم encrypt می کنیم تا قابل خوندن نباشه.

قسمت signature:
امضا به عنوان یک سپر امنیتی برای تشخیص تغییرات در داده‌های توکن و تأیید اینکه توکن توسط یک صادر کننده معتبر ایجاد شده، به کار می‌ره.

پ.ن
تو گوگل سرچ کنید کلی توضیح کامل میاد. بریم سراغ پیاده سازیش

#JWT

@khat_academy
👍9
JWT

اگه شما توسعه دهنده فرانت اند هستید. می تونید سیستم احراز هویت JWT رو توی این پروژه ی واقعی که آنلاینش کردم تست کنید(فعلا آفلاینه)

http://188.121.113.3/api/schema/redoc/

همچنین یک سری قابلیت های دیگه هم در ادامه بهش اضافه می کنم.

#JWT

@khat_academy
7
بررسی استاندارد احراز هویت JWT توی پروژه qanda.

لینک گیت هاب:
https://github.com/alireza-fa/question-and-answer

Model
اولین کاری که میکنیم اینه یک مدل به اسم UserLogin مینویسیم.
اینکه چه فیلد هایی رو میخواید قرار بدید انتخاب خودتونه اما فیلد های مورد نیاز ما این موارد هستش:
user_id
refresh token
expired_at
device
ip_address

Token
یکی از کارهای دیگه که کردیم این هستش که یک سری اطلاعات بیشتری رو توی payload توکن هامون قرار دادیم که این فیلد ها هستش:
username
email
first_name
last_name
device_name
ip_address

دلیل اینکه اینکارو انجام دادیم چیه؟
با اضافه کردن این اطلاعات پرکاربرد دیگه نیاز نیست هر بار از سمت دیتابیس بگیریم.

Encrypt / Decrypt
میخوایم اطلاعاتی که توی payload توکن قرار دادیم قابل دیدن نباشه. پس میایم توکن رو encrypt شده سمت کلاینت ارسال می کنیم و هر وقت که نیاز بود سمت بک اند decrypt میکنیم و عملیات اعتبار سنجی و هرچیزی نیاز هستش رو انجام می دیم.

چجوری توکن رو امن تر کردیم؟
تو مدل UserLogin اطلاعات کاربر موقعی که لاگین می کنه ذخیره کردیم. مثل نام دستگاه و آدرس آی پی. همچنین توی توکن هم اضافه کردیم.
کاری که می کنیم اینه چک می کنیم شخصی که میخواد اکسس توکن جدید بگیره ip address و device name همونه یا نه. اگه اون نبود توکن رو نامعتبر می شماریم.

همچنین برای امنیت بیشتر تو هر درخواست اکسس توکن رو هم می تونیم بررسی کنیم که مشخصاتش با شخصی که داره درخواست میده یکی هستش یا نه

برای بررسی بیشتر حتما به ریپازیتوری گیت هاب سر بزنید. برای حمایت ستاره بدید ممنون میشم.

#JWT

@khat_academy
👍13
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی بعد از سه ساعت کد زدن هنوزم ارور برطرف نشده و دو شب شده تصمیم میگیری که بخوابی😂

@khat_academy
🤣11😱1
لینک اشتراک گذاری تو شبکه های اجتماعی مختلف.
آکولاد اول لینک اون صفحه از وب سایتتون که میخواید به اشتراک بذارید رو میدید. آکولاد دوم توضیح درباره اون لینکه که بعضی از شبکه های اجتماعی میگیرنش


FACEBOOK:

https://www.facebook.com/sharer/sharer.php?u={}


TWITTER:
https://twitter.com/intent/tweet?url={}&text={}


LINKEDIN:

https://www.linkedin.com/shareArticle?mini=true&url={}&noscript={}


PINTEREST:
https://www.pinterest.com/pin/find/?url={}&denoscription={}


TUMBLE:
http://www.tumblr.com/share?v=3&u={}&t={}


TELEGRAM:

https://telegram.me/share/url?url={}&text={}


GOOGLE_PLUS:
https://plus.google.com/share?url={}


WHATSAPP:

whatsapp://send?text={}


@khat_academy
4🔥3
از کی تا حالا شرکتای آمریکایی از طریق جابینجا نیرو جذب می کنن!

یه شرکت آمریکایی این ایملو بهم فرستاده. خودمم تعجب کردم

@khat_academy
😱9😁2
تو تیممون به یکی نیاز داریم بتونه ادیت ویدیو انجام بده.
در حد حرفه ای نه، برای ریلز های اینستا و اینجور محتوا ها

اگه کسی دوست داره جز تیممون شه بهم پی ام بده
@alireza_fai
🎉6👍3
تغییر name server توی لینوکس

تو اکثر سیستم عامل هایی که بیسش لینوکسه،‌داخل فایل
/etc/resolv.conf
سرور های دی ان اس رو مشخص می کنیم.
حداقل باید یک نیم سرور توی فایل وجود داشته باشه که بصورت پیشفرض مساوی با
nameserver 127.0.0.53
هستش.
برای تغییر کافیه ترمینالتونو باز کنید و این دستورو بزنید:
sudo nano /etc/resolv.conf
بعدش دنبال nameserver بگردید و بجای 127.0.0.53 نیم سروری که میخواید جایگزین کنیدو وارد کنید.

نکته:
توی nano برای سیو کردن crt + o رو بزنید و بعدش enter. برای خروج ctr + x رو بزنید.

چه مواقع استفاده می کنیم؟
با توجه به اینکه تو ایران زندگی می کنیم خیلی وقت ها !
مثلا اگه بخواید از داکر استفاده کنید نیازه که دی ان اس خودتونو تغییر بدید.

@khat_academy
👍8
قراره یکی از مقالات خوب در خصوص server hardening در لینوکس رو بصورت ترجمه شده با توضیحات کامل تر توی یه کانال تخصصی قرارش بدم.
اگه برای شما هم مسائل امنیتی سرور جذابه و باهاش سر و کار دارید اینجا هم قرارش میدم(واقعا زیاده هر نکته تقریبا اندازه یه مقالست)
Anonymous Poll
83%
قرارش بدم
17%
قرارش ندم