بررسی استاندارد احراز هویت 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
لینک گیت هاب:
https://github.com/alireza-fa/question-and-answer
Model
اولین کاری که میکنیم اینه یک مدل به اسم UserLogin مینویسیم.
اینکه چه فیلد هایی رو میخواید قرار بدید انتخاب خودتونه اما فیلد های مورد نیاز ما این موارد هستش:
user_id
refresh token
expired_at
device
ip_address
Token
یکی از کارهای دیگه که کردیم این هستش که یک سری اطلاعات بیشتری رو توی payload توکن هامون قرار دادیم که این فیلد ها هستش:
username
first_name
last_name
device_name
ip_address
دلیل اینکه اینکارو انجام دادیم چیه؟
با اضافه کردن این اطلاعات پرکاربرد دیگه نیاز نیست هر بار از سمت دیتابیس بگیریم.
Encrypt / Decrypt
میخوایم اطلاعاتی که توی payload توکن قرار دادیم قابل دیدن نباشه. پس میایم توکن رو encrypt شده سمت کلاینت ارسال می کنیم و هر وقت که نیاز بود سمت بک اند decrypt میکنیم و عملیات اعتبار سنجی و هرچیزی نیاز هستش رو انجام می دیم.
چجوری توکن رو امن تر کردیم؟
تو مدل UserLogin اطلاعات کاربر موقعی که لاگین می کنه ذخیره کردیم. مثل نام دستگاه و آدرس آی پی. همچنین توی توکن هم اضافه کردیم.
کاری که می کنیم اینه چک می کنیم شخصی که میخواد اکسس توکن جدید بگیره ip address و device name همونه یا نه. اگه اون نبود توکن رو نامعتبر می شماریم.
همچنین برای امنیت بیشتر تو هر درخواست اکسس توکن رو هم می تونیم بررسی کنیم که مشخصاتش با شخصی که داره درخواست میده یکی هستش یا نه
برای بررسی بیشتر حتما به ریپازیتوری گیت هاب سر بزنید. برای حمایت ستاره بدید ممنون میشم.
#JWT
@khat_academy
👍13
لینک اشتراک گذاری تو شبکه های اجتماعی مختلف.
آکولاد اول لینک اون صفحه از وب سایتتون که میخواید به اشتراک بذارید رو میدید. آکولاد دوم توضیح درباره اون لینکه که بعضی از شبکه های اجتماعی میگیرنش
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
آکولاد اول لینک اون صفحه از وب سایتتون که میخواید به اشتراک بذارید رو میدید. آکولاد دوم توضیح درباره اون لینکه که بعضی از شبکه های اجتماعی میگیرنش
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
یه شرکت آمریکایی این ایملو بهم فرستاده. خودمم تعجب کردم
@khat_academy
😱9😁2
تو تیممون به یکی نیاز داریم بتونه ادیت ویدیو انجام بده.
در حد حرفه ای نه، برای ریلز های اینستا و اینجور محتوا ها
اگه کسی دوست داره جز تیممون شه بهم پی ام بده
@alireza_fai
در حد حرفه ای نه، برای ریلز های اینستا و اینجور محتوا ها
اگه کسی دوست داره جز تیممون شه بهم پی ام بده
@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
تو اکثر سیستم عامل هایی که بیسش لینوکسه،داخل فایل
/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%
قرارش ندم
گوگلو قانونی دور بزن !
تو این مقاله درباره سئو کلاه خاکستری توضیح دادیم و چند روش برای پیاده سازیش مثال زدیم که به شما این امکانو میده تو مدت زمان کم سئو وب سایتتون تقویت بشه
@khat_academy
تو این مقاله درباره سئو کلاه خاکستری توضیح دادیم و چند روش برای پیاده سازیش مثال زدیم که به شما این امکانو میده تو مدت زمان کم سئو وب سایتتون تقویت بشه
@khat_academy
Telegraph
سئو کلاه خاکستری
- گوگل رو قانونی دور بزن!
🔥6👍3
چهل نکته درباره Linux Server Hardening (قسمت اول)
تو قسمت اول نکته یک تا ده رو بهتون گفتم.
امیدوارم براتون مفید باشه 👌
#hardening
@khat_academy
تو قسمت اول نکته یک تا ده رو بهتون گفتم.
امیدوارم براتون مفید باشه 👌
#hardening
@khat_academy
Telegraph
چهل نکته درباره Linux Server Hardening
👍8🔥3
اگه اول راه هستید و نمیدونید کدوم فیلد مناسب شماست.
اگه میخواید لینکدین حرفه ای داشته باشید و رزومه خوبی برای خودتون درست کنید
این کانال همه این موارد رو پوشش میده
راستی توجه اصلی کانال روی مباحث هوش مصنوعی هستش
پس اگه علاقه مند به این موضوعات هستید حتما دنبال کنید
آدرس کانال:
https://news.1rj.ru/str/MobiFacts
#معرفی_کانال
@khat_academy
اگه میخواید لینکدین حرفه ای داشته باشید و رزومه خوبی برای خودتون درست کنید
این کانال همه این موارد رو پوشش میده
راستی توجه اصلی کانال روی مباحث هوش مصنوعی هستش
پس اگه علاقه مند به این موضوعات هستید حتما دنبال کنید
آدرس کانال:
https://news.1rj.ru/str/MobiFacts
#معرفی_کانال
@khat_academy
👍7
🔥13
« از اون بالا کفتر میایه »
شهاب تیام که با آهنگ «از اون بالا کفتر میایه» شناخته میشه مهندس سخت افزار هستش و پونزده سالی توی اینتل مشغول به فعالیت بوده و الانم تو یه شرکت جدید شروع به فعالیت کرده :)
بله. بعضی وقتا زندگی مسیری رو برات میچینه که فکرشم نمیکردی
(باورت نمیشه کامنتو نگاه کن)
https://www.linkedin.com/in/shahab-tiam-a873b14/
@khat_academy
شهاب تیام که با آهنگ «از اون بالا کفتر میایه» شناخته میشه مهندس سخت افزار هستش و پونزده سالی توی اینتل مشغول به فعالیت بوده و الانم تو یه شرکت جدید شروع به فعالیت کرده :)
بله. بعضی وقتا زندگی مسیری رو برات میچینه که فکرشم نمیکردی
(باورت نمیشه کامنتو نگاه کن)
https://www.linkedin.com/in/shahab-tiam-a873b14/
@khat_academy
😱7🤣3👍2
سیر تحول فنی «کوییز آو کینگز»: مسیری که باعث تعجب تیم یوتیوب شد!
https://virgool.io/@mohammad7293/%D8%B3%DB%8C%D8%B1-%D8%AA%D8%AD%D9%88%D9%84-%D9%81%D9%86%DB%8C-%DA%A9%D9%88%DB%8C%DB%8C%D8%B2-%D8%A2%D9%88-%DA%A9%DB%8C%D9%86%DA%AF%D8%B2-%D9%85%D8%B3%DB%8C%D8%B1%DB%8C-%DA%A9%D9%87-%D8%A8%D8%A7%D8%B9%D8%AB-%D8%AA%D8%B9%D8%AC%D8%A8-%D8%AA%DB%8C%D9%85-%DB%8C%D9%88%D8%AA%DB%8C%D9%88%D8%A8-%D8%B4%D8%AF-h8m7caqni6rg
@khat_academy
https://virgool.io/@mohammad7293/%D8%B3%DB%8C%D8%B1-%D8%AA%D8%AD%D9%88%D9%84-%D9%81%D9%86%DB%8C-%DA%A9%D9%88%DB%8C%DB%8C%D8%B2-%D8%A2%D9%88-%DA%A9%DB%8C%D9%86%DA%AF%D8%B2-%D9%85%D8%B3%DB%8C%D8%B1%DB%8C-%DA%A9%D9%87-%D8%A8%D8%A7%D8%B9%D8%AB-%D8%AA%D8%B9%D8%AC%D8%A8-%D8%AA%DB%8C%D9%85-%DB%8C%D9%88%D8%AA%DB%8C%D9%88%D8%A8-%D8%B4%D8%AF-h8m7caqni6rg
@khat_academy
👍8
تفاوت سایز Json با Protobuf
Json: 214
Protobuf: 53
حدودا چهار برابر بیشتره. (البته تو این کیس و تو این حالت)
@khat_academy
Json: 214
Protobuf: 53
حدودا چهار برابر بیشتره. (البته تو این کیس و تو این حالت)
@khat_academy
👍8
تو این قسمت از khat weekly، مهمون ما امین علی مزاریان هست که توسعه دهنده بک انده (Python Back-end developer)
اما جز اینکه تو برنامه نویسی کارش خوبه،توی مهارت های نرم و رزومه نویسی هم تجربیات خوبی داره و قراره تو میت از ساخت یک رزومه مناسب تا مصاحبه صحبت کنیم 💥
پیشنهاد میکنم حتما این قسمتو دنبال کنید چون قراره کلی چیز از امین علی یاد بگیریم.
همچنین هر سوالی دارید، تو کامنت بپرسید تا توی پادکست دربارش صحبت کنیم
تاریخ میت:
چهارشنبه ۱۹ مهر ساعت ۱۹:۰۰
LinkedIn
Github
#meet #weekly
@khat_academy
اما جز اینکه تو برنامه نویسی کارش خوبه،توی مهارت های نرم و رزومه نویسی هم تجربیات خوبی داره و قراره تو میت از ساخت یک رزومه مناسب تا مصاحبه صحبت کنیم 💥
پیشنهاد میکنم حتما این قسمتو دنبال کنید چون قراره کلی چیز از امین علی یاد بگیریم.
همچنین هر سوالی دارید، تو کامنت بپرسید تا توی پادکست دربارش صحبت کنیم
تاریخ میت:
چهارشنبه ۱۹ مهر ساعت ۱۹:۰۰
Github
#meet #weekly
@khat_academy
👍5🔥2🥰1👏1😁1
collections.namedtuple
در پایتون،
شما میتوانید یک
در زیر یک مثال ساده استفاده از
از مزایای استفاده از
#python
@khat_academy
در پایتون،
namedtuple یک کلاس فراهم میکند که به شما امکان ساخت سادهتر و مدیریت آسانتر دادههای ساختارمند را میدهد. namedtuple به شما اجازه میدهد یک کلاس سادهتر را با فیلدها و مقادیرش ایجاد کنید و به طور خودکار ویژگیهایی مانند نامگذاری و استخراج مقادیر از آنها را برای شما مدیریت کند.شما میتوانید یک
namedtuple با استفاده از تابع namedtuple از ماژول collections ایجاد کنید. این تابع به شما اسم کلاس مورد نظرتان را و همچنین نام فیلدها را به عنوان ورودی میگیرد. به عنوان نتیجه، یک کلاس ایجاد میشود که دارای ویژگیهایی مانند نامگذاری فیلدها و روشهای استخراج مقادیر است.در زیر یک مثال ساده استفاده از
namedtuple را مشاهده میکنید:from collections import namedtupleهمانطور که مشاهده میکنید، شما میتوانید مقادیر مختلف را با نام فیلدها به عنوان آرگومانها به کلاس
# تعریف یک `namedtuple` برای نمایش اطلاعات یک شخص
Person = namedtuple('Person', ['name', 'age', 'gender'])
# ایجاد یک شخص جدید
person1 = Person(name='John', age=30, gender='Male')
# استخراج مقادیر
print(person1.name) # خروجی: John
print(person1.age) # خروجی: 30
print(person1.gender) # خروجی: Male
namedtuple ارسال کنید و سپس میتوانید با استفاده از نام فیلدها آنها را استخراج کنید.از مزایای استفاده از
namedtuple میتوان به سادگی کد، قابلیت خوانا بودن بیشتر کد اشاره کرد. همچنین، `namedtuple`ها در مواردی که نیاز به دادههای ساختارمند و غیرقابل تغییر دارید، مفید هستند.#python
@khat_academy
👍8
پورت صفر:
در مفاهیم شبکه و ارتباطات، پورت 0 به معنای یک پورت خاص است که به عنوان پورت "رزرو شده" شناخته میشود. وقتی به یک برنامه یا سرویس شبکه نیاز دارید تا به یک پورت خاص متصل شود، میتوانید از یک شماره پورت عددی استفاده کنید. پورتها از اعداد صحیح بین 0 تا 65535 تشکیل شدهاند.
اما پورت 0 به طور خاص به معنای یک پورت رزرو شده است که به عنوان پورت پیشفرض (default) مورد استفاده قرار میگیرد. وقتی یک برنامه یا سرویس به پورت 0 متصل میشود، این به معنای این است که برنامه یا سرویس مورد نظر، سیستم عامل را مکلف میکند یک پورت آزاد و در دسترس را به آن اختصاص دهد.
به عنوان مثال، در برنامهنویسی شبکه، وقتی یک سوکت (socket) برای برقراری ارتباط با سروری فراخوانی میشود و شماره پورت آن را برابر با 0 قرار میدهید، سیستم عامل یک پورت آزاد را به برنامه اختصاص میدهد و برنامه میتواند آن را برای ارتباط استفاده کند.
استفاده از پورت 0 معمولاً برای برنامههایی است که نمیخواهند به طور صریح پورت خاصی را انتخاب کنند، به سیستم اجازه میدهند یک پورت خالی را برایشان انتخاب کند.
برای مثال توی جنگو اگه بنویسید runserver 0 بصورت رندوم یک پورت خالی رو انتخاب می کنه.
#port
@khat_academy
در مفاهیم شبکه و ارتباطات، پورت 0 به معنای یک پورت خاص است که به عنوان پورت "رزرو شده" شناخته میشود. وقتی به یک برنامه یا سرویس شبکه نیاز دارید تا به یک پورت خاص متصل شود، میتوانید از یک شماره پورت عددی استفاده کنید. پورتها از اعداد صحیح بین 0 تا 65535 تشکیل شدهاند.
اما پورت 0 به طور خاص به معنای یک پورت رزرو شده است که به عنوان پورت پیشفرض (default) مورد استفاده قرار میگیرد. وقتی یک برنامه یا سرویس به پورت 0 متصل میشود، این به معنای این است که برنامه یا سرویس مورد نظر، سیستم عامل را مکلف میکند یک پورت آزاد و در دسترس را به آن اختصاص دهد.
به عنوان مثال، در برنامهنویسی شبکه، وقتی یک سوکت (socket) برای برقراری ارتباط با سروری فراخوانی میشود و شماره پورت آن را برابر با 0 قرار میدهید، سیستم عامل یک پورت آزاد را به برنامه اختصاص میدهد و برنامه میتواند آن را برای ارتباط استفاده کند.
استفاده از پورت 0 معمولاً برای برنامههایی است که نمیخواهند به طور صریح پورت خاصی را انتخاب کنند، به سیستم اجازه میدهند یک پورت خالی را برایشان انتخاب کند.
برای مثال توی جنگو اگه بنویسید runserver 0 بصورت رندوم یک پورت خالی رو انتخاب می کنه.
#port
@khat_academy
👍14