رفتن به مطلب
مرورگر پیشنهادی آرساکیا گیم مرورگر های تحت موتور کرومیوم می‌باشد، برای دانلود روی مرورگر انتخابی خود کلیک کنید
Google Chrome Microsoft Edge Ungoogled Chromium Brave Opera GX Opera

ارسال‌های توصیه شده

به نام خداوند جان و خرد

 

 

سلام عرض میکنم خدمت همه ی شما دوستان و هم وطنان عزیز

امیدوارم حال یک یکتون خوب باشه

امروز می‌خوایم ادویه جات های برنامه نویسا رو بررسی کنیم

می‌خوایم ببینیم چقد برنامه نویسا از ادویه جات توی غذاشون (کداشون) استفاده میکنن

 

(تمامی مباحث گفته شده مربوط به امنیت و صفحاتی همچون لاگین و رجیستر هستش)

 

1- نمک (Salt) چیست؟

در برنامه نویسی و امنیت و کلا کسایی که به این موضوع ها علاقه دارن، نمک یکی از ادویه های مفیدی هستش که به اندازه های مختلف و تصادفی (Random) توی غذا میریزن برنامه نویسا

نمک یه متن تصادفی هستش که زمانی که کاربر میخوادش پسوردش رو وارد کنه (فقط وقتی که میخواد رجیستر کنه، توی PHP این اتفاق به صورت اتوماتیک میوفته)، و بعد متن هش میشه و در دیتابیس ذخیره میشه، اینکار امنیت رو از چند لحاظ بالا می‌بره:

1- یک متن رندوم تصادفی برای هر کاربر میسازه، یعنی اگه چندین کاربر پسوردشون ۱ ۲ ۳ ۴ باشه برای هر کدوم هش جداگانه ای ساخته میشه و اگه دیتابیس دسته هکر بیوفته نمیتونه کار زیادی انجام بده و خیلی طولانی میشه انجام کار ها، حداقل ۲۸ کاراکتر و حداکثر ۱۲۸ کاراکتر باید طول نمک باشه

 

2- فلفل (Pepper) چیست؟

توی برنامه نویسی به جز نمک یک مبحث دیگه ای داریم تحت عنوان "فلفل تند و آتشین"! قشنگ پدره هکر رو در میاره! طبق محاسبات محققان، اگه فلفل اضافه شه به پسورد عه کاربرا حتی با ابر کامپیوتر و ابر سیستم ها میلیارد ها سال نوری طول می‌کشه تا هکر بتونه پسورد رو به دست بیاره، (حتی اگه نمک رو نزارین)، اما خب این همه توضیح دادیم درست، فلفل تند و آتشین دقیقا چیه؟ فلفل دقیقا برخلاف نمک یک متن تصادفی نیستش، برای همه ی کاربر ها یکی هستش، اما!!! برخلاف نمک و بقیه مباحث، فلفل مستقیما توی دیتابیس ذخیره نمیشه، فلفل هم مانند نمک به پسورد اضافه میشه، هش میشه و سپس توی دیتابیس ذخیره میشه، طول فلفل از ۱۲۸ کاراکتر تا بینهایت کاراکتر هستش، اگه ۱۲۸ کاراکتر باشه میلیارد ها سال نوری عه، ببینید ۵۷۳۸۳۷ کاراکتر یا بیشتر باشه چی میشه... فلفل یک متنی هستش که توی فایل های حیاطی مثل .env ذخیره میشه و هروقت که کاربر بخواهید رجیستر & لاگین کنه اون به متن کاربر اضافه میشه، اما خب آقا اگه اضافه میشه به صورت سیستمی به چه دردی میخوره توی حملات آنلاین (بروت فورس، رینبو تیبل و...)، دقیقا مبحث فلفل برای بخش آفلاین هستش، نه آنلاین، زمانی که هکر دیتابیس رو بدست آورده باشه، فقط یک پسورد هش شده تحویل میگیره، این پسورد هش شده ترکیبی از پسورد کاربر و فلفل و حتی اگه خواستین نمک هستش، (البته نمک برای جلوگیری از رینبو تیبل (Rainbow Table) هستش بالا یه اشتباهی شد 😂)، و حالا هکر بخواد متن هش شده رو با نرم افزار هایی مثل Hashcat, John The Ripper, و... آن هش کنه و متن اصلی رو بدست بیاره، اینجا فلفل خودشو نشون داده، هکر تا زمانی که متن عه اصلی عه فلفل که توی .env ذخیره شده رو نداشته باشه، ببخشینا هیچ 👾 نمیتونن نوش جان فرمایند 😂، ولی اگه داشته باشه، ببخشینا شما دیگه نمیتونی کاری انجام بدین 😂، واسه همینه که .env مهم ترین فایل عه همه ی پروژه ها هستش! ۱۰۰٪ مطمعنم هیچکدوم هیچی متوجه نشدین، بدیهی هستش، تا کد رو نبینین اینجور مباحث رو متوجه نمیشید، چون یه مبحثی نیستش که بگید آره مثلا دو تا کلمه میخونم تموم میشه میره، باید به صورت عملی ببینید که چی به چیه تا متوجه بشید:

حالا دیگه حرف بسه، کدمون رو نشونتون می‌دیم!

<?php

// نمک Salt
$password = "Password_Test";

// تابع یه password_hash در PHP میاد و به صورت اتوماتیک نمک رو اظافه میکنه اما خب من باز میگم دیگه
$salt = openssl_pseudo_random_bytes(50); //یک قاشق نمک (۵۰ بایت نمک)
$passwordWithSalt = $salt . $password; // روش های زیادی برای اطافه کردن نمک وجود داره به پسورد
/*
روش های اصولی:
$salt . $password
$password . $salt
$salt . $password . $salt
*/
// اگر نمک رو به صورت دستی بنویسید باید به اندازه ی بایت هایی که برای نمک گذاشتید رو از جاهایی که گذاشتید (اول، اخر یا هردو) حذف کنید و بعد اعتبارسنجی کنید ببینید آیا هش شده ی پسورد عه الان عه کاربر با هش شده ی پسورد قبلیش یکیه یا نه، باید از یک الگوریتم استفاده کنید واسه هم اعتبارسنجی هم رجیستر
// پیشنهاد میکنم از password_hash و password_verify توی پی اچ پی استفاده کنید که این کا ها رو (به جز فلفل که خودتون باید اظافه کنید رو) انجام میدن هم اعتبارسنجی هم ساخت نمک هم همه ی کار هایی که بالا گفتم رو

// فلفل Pepper
$password = "PasswordTEST";
$pepper = "PEPPER_TEXT_HELLO_HOWAREYOUHFNDJDBSHEJDUFH"; // مثال هستش، وگرنه یک متن معنا دار (یا هش شده) هستش که از .env خونده میشه
$passwordWithSomePepper = $password . $pepper;

// این در دیتابیس ذخیره میشه
$passwordHash = password_hash($passwordWithSomePepper, "ARGON2ID");

// Authentication
$password = "shsh"; // پسوردی که کاربر وارد کرده (در لاگین)
$pepper = $pepper; // همون فلفل تندی که توی .env هستش
$passwordWithPepper = $password . $pepper;
// پسوردی که کاربر توی لاگین وارد کرده + پسوردی که توی دیتابیس هستش
if(password_verify($passwordWithPepper, $passwordHash) {
  echo "هش ها یکسان هستن و کاربر پسوردش درسته";
}
else {
  echo "هش ها یکسان نیستن پس پسورد اشتباهه";
}

 

این تمام ماجرای فلفل و نمک هستش

فقط کد هارو زیادی شور یا تند نکنینا شیطونا 😂

 

امیدوارم که خوشتون اومده باشه، تا تاپیک های بعدی شما رو به خداوند بزرگ میسپارم، خدا یار و نگهدارتون باشه!

 

ویرایش شده توسط Integer

The only things making you unhappy are your own thoughts

:My Account

Faise.png

:My Brothers

Olden.png

Parshan.png

MohammadAli.png

Shibemarg.png

لینک به دیدگاه
https://forum.arsacia.ir/topic/87198-%D8%A7%D8%AF%D9%88%DB%8C%D9%87-%D8%AC%D8%A7%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%D8%A7-%F0%9F%8C%B6%EF%B8%8F%F0%9F%A7%82/
به اشتراک گذاری در سایت های دیگر

کارت درسته

             ff4e25_25InShot-%DB%B2%DB%B0%DB%B2%DB%B5

                            :My Account

c07a16_25e23912-25animated-line-image-00

a14027_25InShot-%DB%B2%DB%B0%DB%B2%DB%B5

78c327_25c07a16-25e23912-25animated-line

cac727_25InShot-%DB%B2%DB%B0%DB%B2%DB%B5

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید.
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   بازگردانی قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
  • اضافه کردن...