آردوینو امنیت اینترنت اشیا IOT برد Esp32 برد ESP8266 برد Nodemcu

ارتقا امنیت وب سرور ESP با افزودن سیستم احراز هویت ESP32/8266

افزودن سیستم احراز هویت به وب سرور ESP32/8266
نوشته شده توسط CiferTech

فرض کنید یک وب سرور با تراشه ESP خود راه اندازی کرده اید، خب این وب سرور می توانئد اطلاعات مفیدی را درون خود مانیتور کند مانند اطلاعات دما، رطوبت، تردد افراد در محیط و همچنین تصاویر زنده، حالا برای اینکه هر شخص با در دست داشتن ip این وب سرور قادر به دسترسی گرفتن از آن نباشد راه حل ساده ای وجود دارد که در این آموزش به می پردازیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


وب سرور


وب سرور ها برنامه هایی هستند که مسئولیت آن ها قبول کردن درخواست های Http است که از سمت کاربران ارسال می شود، وب سرور ها در پاسخ اطلاعاتی را ارسال می کنند که ما معمولا به نام صفحات Html می‌شناسیم. خب حالا فرض کنیم که در مرورگر https://digispark.ir را سرچ کردیم، اتفاقی که می‌افتد به این شکل است که مرورگر شما یک درخواست به دامنه‌ای با نام digispark.ir ارسال می‌کند. در حالت عادی زمانی که شما آدرس سایتی را در مرورگر جست و جو می‌کنید از حروف انگلیس استفاده می‌کنید یعنی کلماتی قابل فهم برای انسان اما در واقع برای ورود به یک سایت باید از طریق ip آن اقدام کنید، اینجاست که مفهومی به نام DNS وارد کار می‌شود، پس در واقع زمانی که شما URL سایتی را جستجو می کنید مرورگر از طریق سرویس DNS، آی پی مربوط را پیدا می‌کند و درخواستی ارسال خواهد کرد.

وب سرور ESP32: کنترل خروجی ها بصورت سخت افزاری و نرم افزاری

 


برد ESP8266


تراشه های ESP8266 از موارد محبوب در زمینه اینترنت اشیا هستند که نسبت به دیگر نمونه ها کیفیت بهتر و همچنین قیمت پایین تری نیز دارند، هسته مرکزی این ماژول ESP8266 EX می باشد که در واقع زیر این شیلد فلزی قرار گرفته است، در ضمن این شیلد فلزی به منظور کاهش نویز و همچنین محافظت از قطعات SMD حساس این ماژول قرار داده شده است. این ماژول ها در سری های مختلفی تولید می‌شوند از جمله esp01 و esp12، در واقع تفاوتی که مدل ها با یکدیگر دارند تعداد GPIO ها و همچنین حافظه آن ها است البته معمولا از نظر ظاهری نیز تفاوت هایی که با یکدیگر دارند که قابل تشخیص است. این ماژول ها از شبکه WIFI داخلی پشتیبانی می‌کنند، این میکرو کنترلر ها اولین بار در سال ۲۰۱۴ به بازار عرضه شدند. ESP8266 دارای ۱۳ GPIO و همچنین یک ورودی آنالوگ (A0) است.

 


برد ESP32


وقتی از ESP32 صحبت می‌کنیم،از مصرف انرژی کمتر، قدرت پردازش بهتر، تکنولوژی بروز صحبت می‌کنیم، یعنی نسل جدیدی از تراشه های WIFI که در ادامه نسل قبل یعنی ESP8266 به بازار معرفی شدند، که علاوه بر WIFI از بلوتوث نیز پشتیبانی می‌کنند. از برد های کمکی که برای این تراشه عرضه شده می‌توان به NodeMCU و ESP32-CAM اشاره کرد. این تراشه در سه نوع wroom , wrover و solo تولید می‌شود.

 


نحوه کار امنیت وب سرور


در این پروژه با ساخت یک صفحه لاگین برای وب سرور و البته مشخص کردن یک یوزر و پسوورد برای آن اقدام امن کردن وب سرور خود می کنیم، البته برای فردی که قصد دسترسی به شبکه را دارد همواره راهی برای نفوذ وجود دارد اما با این کار ما موانع را بیشتر کرده و درصد شکست برای طرف مقابل بیشتر خواهیم کرد. در ضمن این صفحه لاگین با استفاده از پروتکل HTTP اجرا خواهد.

افزودن سیستم احراز هویت به وب سرور ESP32/8266

 


پیش نیازهای امنیت وب سرور


در این آموزش از دو کتابخانه ESPAsyncWebServer و  AsyncTCP استفاده می شود، در ادامه مراحل نصب را دنبال کنید.

  • ابتدا به مسیر Sketch Include Library > Add .zip Library بروید، و فایل .Zip که از لینک های زیر دانلود کرده اید را اضافه کنید.

وب سرور ESP32: کنترل نور LED

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

ESP32:  ESPAsyncWebServer و AsyncTCP

ESP8266ESPAsyncTCP و   ESPAsyncWebServer 

 

  • نصب برد ESP32 در Arduino IDE

در این آموزش از برد ESP32 استفاده می کنیم، در ادامه مراحل را برای نصب این برد در نرم افزار آردوینو دنبال کنید:

  • ابتدا در نرم افزار Arduino IDE به مسیر FilePreferences بروید.

وب سرور ESP32: کنترل نور LED

  • لینک زیر را در بخش مشخص شده قرار دهید.

وب سرور ESP32: کنترل نور LED

  • سپس به مسیر Tools > Board > Boards Manager بروید.

وب سرور ESP32: کنترل نور LED

  • در بخش board manager  کلمه ESP32  را سرچ کنید و بر روی install  کلیک کنید.

وب سرور ESP32: کنترل نور LED

 


کد و تحلیل


ابتدا در این دو خط SSID و پسوورد شبکه خود را وارد کنید؛

const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

 

در این بخش یوزر و پسووردی را که می خواهید توسط آن به وب سرور دسترسی داشته باشد را وارد کنید؛

const char* http_username = "cifer";
const char* http_password = "cifer";

کد کامل پروژه امنیت وب سرور

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 


جمع بندی


در نهایت پس از پروگرام کردن کد و سرچ کردن ip موجود در سریال مانیتور با صفحه لاگین روبرو خواهید شد و با وارد کردن یوزر و پسوورد از قبل مشخص شده در کد می توانید به وب سرور دسترسی داشته باشید. در این سورس کد می‌توانید برای پروژه های مختلفی استفاده کنید در صورتی احساس می‌کنید نیاز به امنیت بیشتری دارند، تنها با چن خط کد و تنظیماتی از پیش تعریف شده از اطلاعات وب سرور خود محافظت کنید.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

CiferTech

فقط 10 نوع آدم در این دنیا وجود داره، اونی که باینری میفهمه و اونی که باینری نمیفهمه! ^-^

~ اینستاگرام: CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰ دیدگاه

    • از نظر من برجسته ترین تفاوت بین ای دو تراشه بلوتوث و تعداد ADC است. اما در واقع خیلی خیلی بیشتر از اینها پیشرفت بین این دو نسل وجود دارد که تعدادی از آن هارا در آموزش ذکر کردم.

  • سلام.من برنامه روبا موفقیت روی ماژول آپلود کردم ولی توی سریال مانیتور آی پی نمایش نمیده حتی نقطه پین هم نمیاد.ممنون میشم راهنمایی کنید

  • سلام.اگه امکانش هست مشخص کنید که کدام قسمت های سورس بالارا میتوان در پروژه های دیگر فقط ب منظور ایجاد لاگین استفاده کرد؟

      • فک کنم سوالمو بد پرسیدم.منظورم این بود که توی این پروژه فقط روی یک رله کنترل داریم من میخوام که روی رله های بیشتری کنترل داشته باشم.آیا امکانش هست که بشه تعداد کنترل رله ها رو در این پروژه بیشتر کرد؟و همینطور برای اضافه کردن چیزهای بیشتر به این پروژه هر کدی که دارم رو درون تابع loopبنویسم؟در ضمن برای من سیستم احراز هویت در این پروژه خیلی مهمه

          • اگه امکان داره با جزییات بیشتری توضیح بدید که چگونه می شود دوتا پروژه ای که فرمودید رو باهم ترکیب نمود؟

            • هردو کد از سه بخش تقسیم شده فبل از Setup که مربوط به کتابخانه ها است،و Setup و loop. در بخش کتابخانه پروژه دوم که به شما معرفی کردم کتابخانه ها و تنظیمات مورد نیاز را از این در کد کنترل رله وارد کنید همچنین در بخش loop موارد را بدون تغییر وارد کنید. در وارد کردن بخش Setup این کد برای کد کنترل باید دقت داشته باشد موارد تکراری وارد نشوند و کد های HTML بصورت کامل جایگذاری شوند.