<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های طاها خضوعی | Taha Khozooie</title><link>https://virgool.ir/feed/@tahakh77</link><description></description><language>fa</language><pubDate>2026-11-11 03:10:05</pubDate><image><url>https://files.virgool.ir/upload/users/67530/avatar/avatar.png</url><title>طاها خضوعی | Taha Khozooie</title><link>https://virgool.ir/@tahakh77</link></image><item><title>امنیت در اینترنت اشیاء</title><link>https://virgool.ir/@tahakh77/امنیت-در-اینترنت-اشیاء-odus5rf1hldd</link><description>چکیده و مقدمه: اینترنت اشیا، شبکه اي از قطعات فیزیکی، سنسور ها و نرم افزارها میباشد که داده ها و دستورات را از طریق سرورها و سیستم هاي متمرکز و یا سایر روش هاي مبتنی بر زیرساخت هاي ارتباطی در هرزمان و مکان رد و بدل میکنند. اینترنت اشیا در صنایع مختلفی نظیر کشاورزي، بهداشت، کارخانجات، شهرداري و همچنین مصارف شخصی خانگی کاربرد دارد. این فناوري که به سرعت درحال رشد و مورد توجه و استفاده همگانی قرار گرفته، برخی چالش ها و نگرانی ها در مورد امنیت و محرمانگی اطلاعات را ایجاد کرده است. ایده این فناوري در سال 1991 توسط Mark Weiser ارائه شد تا دستگاه ها و وسایلی که در زندگی روزمره نادیده گرفته میشوند با هم در ارتباط باشند و تخمین زده شد تا سال 2025 حدود 25 میلیارد دستگاه به از این فناوري استفاده کنند. برخی از فناوري هایی که در IoT بکار گرفته میشوند: حسگرها، تلفن هاي هوشمند، گجت هاي پوشیدنی، BigData و Cloud هستند.نگرانی، تهدید ها و آسیب پذیري هاي مطرح در حوزه IoT و راه حل ها: - حریم خصوصی و ذخیره اطلاعات - حملات سایبري - عدم استفاده از فنون رمزنگاري مناسب - عوامل انسانی - روش احراز هویت ناکافیحملات سایبري: از اشیا موجود در اینترنت براي حملات اینترنتی استفاده میشود، حملاتی نظیر DOS, DDOS, Smurf راهکار هاي پیشگیري:- استفاده از آنتی ویروس و فایروال - رمزگذاري داده ها - احراز هویت دقیق تر و سیستم هاي پیشگیري از نفوذاحراز هویت ناکافی: روش احراز هویت افراد و دستگاه ها که در لایه برنامه انجام میشود یکی از مورد استفاده ترین روش براي دسترسی به اطلاعات و همچنین دستگاه ها در اینترنت اشیا هست. اما برخی با استفاده از روش هاي احراز هویت ساده، زمینه نفوذ را براي دیگران فراهم میکنند. برخی از روش هاي نفوذ SQL Injection, XSS و ... است اما میتوان با روش هاي زیر این تهدید هارا تا حدودي بی اثر کرد:- ورود دومرحله اي - مکانیسم قفل حساب بعد از 3بار تلاش ورود ناموفق - ارائه کلمات عبور یکبارمصرفعوامل انسانی: روش هایی نظیر فیشینگ، مهندسی اجتماعی، مهندسی معکوس، ایمیل هاي کلاهبرداري برخی از تهدیدات اینترنت اشیا به حساب میآیند. راهکار هاي پیشگیري براي جلوگیري از نفوذ میتواند به شرح زیر باشد:- استفاده از رمز عبور هاي یکبار مصرف - استفاده از پروتکل هاي ایمن نظیر HTTPS - استفاده از آنتی ویروس و فایروال - آموزش و افزایش آگاهی - احراز هویت دقیق تر و سیستم هاي پیشگیري از نفوذمنابع:ScienceDirect (Towards Security on Internet of Things: Applications and Challenges in Technology) - www.sciencedirect.comIEEE (Security Issues and Challenges in IoT) – www.ieeexplore.ieee.orgEjosat (A Survey on Security Threats and Solutions in the Age of IoT) – www.dergipark.org.trcore.ac.uk (Security In The Internet Of Things – A Systematic Mapping Study) –  www.core.ac.uk</description><category>طاها خضوعی | Taha Khozooie</category><author>طاها خضوعی | Taha Khozooie</author><pubDate>Sat, 27 Mar 2021 19:09:01 +0430</pubDate></item><item><title>کار با WorkBox در ریکت (PWA)</title><link>https://virgool.ir/@tahakh77/کار-با-workbox-در-ریکت-clppq7rudood</link><description>PWA Workbox — https://developers.google.com/web/tools/workbox/ورک باکس مجوعه ای از کتابخانه ها برای ساده‌تر شدن کار با Service worker جهت فعالسازی cache در یک وب اپلیکیشن با قابلیت های مختلف برای کنترل آن هست. برخی از ویژگی و قابلیت های WorkBox :بالا بردن Performance فعال بودن اپلیکیشن در حالت آفلاینامکان تعریف استراتژی برای cache هااجرای دستورات در پس زمینه اپلیکیشنافزودن و کار با WorkBox به پروژهدر این بخش فقط نحوه افزودن WorkBox و cache کردن تمام فایل های یک پروژه بیان میشه, در آینده اگر فرصت شد ادامه مطلب قرار داده میشه. (برای دسترسی به کد ها از اینجا اقدام کنید)بعد از ایجاد پروژه CRA, مراحل زیر را طی کنید:۱. نصب خط فرمان (CLI) مربوط به WorkBox:npm install --global workbox-cli@^3.0.0اگر هنگام نصب خطایی دریافت کردید یا زمان استفاده از دستور workbox خطای workbox not found گرفتید٬ قبل از دستور بالا از sudo -i استفاده کنید.۲. ایجاد فایل مدیریت و شخصی سازی Service worker:داخل روت پروژه (فولدر src) یک فایل sw.js ایجاد کرده و کد های زیر را داخل آن قرار میدهیمimportScripts(&#39;https://storage.googleapis.com/workbox-cdn/releases/4.0.0/workbox-sw.js&#39;);if (workbox) {    console.log(`WB IS OK`);    workbox.core.setCacheNameDetails({        prefix: &#39;TEST-SW&#39;,        suffix: &#39;v1&#39;    });    workbox.precaching.precacheAndRoute([]);    self.addEventListener(&#34;message&#34;, event =&gt; { if (event.data &amp;&amp; event.data.type === &#34;SKIP_WAITING&#34;) {            skipWaiting();        }    });     workbox.routing.registerRoute(        /\.(?:png|jpg|jpeg|svg|gif)$/, new workbox.strategies.CacheFirst({            cacheName: &#39;image-cache&#39;,            plugins: [ new workbox.expiration.Plugin({                    maxEntries: 25,                    maxAgeSeconds: 7 * 24 * 60 * 60,                })            ],        })    );} else {    console.log(&#34;WB ERROR&#34;);}۳. خروجی گرفتن از اپلیکیشن:در مرحله بعدی هنگام کار با WorkBox CLI نیاز داریم آدرس فولدر Build را بدیم و چون اگر این فولدر وجود نداشته باشه خطا دریافت میکنیم بنابراین یکبار از پروژه خروجی میگیریم تا این فولدر ایجاد شود. (این کار فقط برای ایجاد WorkBox هست, اگر از CI/CD استفاده میکنید مشکلی پیش نمیاد)npm run build۴. اجرای خط فرمان نصب WorkBox:با کد زیر پروسه ایجاد و پیکربندی WorkBox اجرا میشهworkbox wizard --injectManifestبعد از اجرای فرمان بالا سوالاتی برای ایجاد فایل پیکربندی پرسیده میشه, در سوال اول آدرس فولدری که خروجی پروژه در آن قرار داره را میپرسه (همون فولدر Build که ساختیم)پس /build را انتخاب کرده و enter کنیدمرحله بعدی از ما میپرسه چه فایل هایی رو میخوایم cache کنیم. در حالت پیشفرض همه فایل ها انتخاب شده اما یکی از فایل هارو با زدن space از لیست خارج کرده و enter را بزنیدمرحله بعدی آدرس فایل sw.js رو که ساختیم میخواد, پس src/sw.js را وارد کرده و enter بزنیددو مرحله بعدی آدرس محل قرار گیری Service worker بعد از خروجی گرفتن از اپلیکیشن و محل قرارگیری فایل workbox-config رو میخوان, برای هردو مرحله enter را میزنیمخب فایل workbox-config.js با موفقیت ایجاد شد. فایل را باز کرده و این کد رو جایگزین مقادیر داخل آن کنید (این مرحله اجباری نیست)module.exports = {    &#34;globDirectory&#34;: &#34;build/&#34;,    &#34;globPatterns&#34;: [        &#34;/&#34;,        &#34;**/*.css&#34;,        &#34;**/*.js&#34;,        &#34;**/*.ttf&#34;,        &#34;**/*.woff&#34;,        &#34;**/*.woff2&#34;,        &#34;**/*.png&#34;,        &#34;**/*.svg&#34;,        &#34;**/*.eot&#34;,        &#34;index.html&#34;,        &#34;manifest.json&#34;,    ],    &#34;swSrc&#34;: &#34;src/sw.js&#34;,    &#34;swDest&#34;: &#34;build/sw.js&#34;,    &#34;globIgnores&#34;: [        &#34;../workbox-config.js&#34;    ]};۵. داخل فایل package.json شده و build را به شکل زیر تغییر میدیم&#34;build&#34;: &#34;CI=false TSC_COMPILE_ON_ERROR=false react-scripts build &amp;&amp; workbox injectManifest workbox-config.js &amp;&amp; npm run clean-cra-sw&#34;, &#34;clean-cra-sw&#34;: &#34;rm -f build/precache-manifest.*.js &amp;&amp; rm -f build/service-worker.js&#34;, &#34;start-sw-build&#34;: &#34;react-scripts build &amp;&amp; workbox injectManifest workbox-config.js &amp;&amp; npm run clean-cra-sw &amp;&amp; serve -s build&#34;کد start-sw-build برای دریافت خروجی از پروژه و اجرای فایل deploy شده پروژه که در فولدر build هست, بر روی localhost.اگر از start-sw-build میخواید استفاده کنید این پکیج رو نصب کنید:npm install -g serve۶. وقتی از WorkBox استفاده میکنیم نیازی به Service worker که پیشفرض در پروژه هست نداریم, بنابراین فایل service-worker.js و کد های مربوط به import و رجیستر کردن آن در فایل index.js را پاک کنید.۷. کد زیر را داخل تگ body در index.html قرار دهید: if (&#39;serviceWorker&#39; in navigator) {        window.addEventListener(&#39;load&#39;, () =&gt; {            navigator.serviceWorker.register(&#39;/sw.js&#39;)                .then(registration =&gt; {                    console.log(`Service Worker registered: ${registration.scope}`);                })                .catch(err =&gt; {                    console.log(`failed: ${err}`);                });        });    }۸. نصب workbox-window:npm install workbox-window۹. پکیج را نصب کرده و در App.js کد زیر را قرار میدهیم (js مادر, برای من App بوده شاید برای شما فایل دیگه ای باشه)import {Workbox} from &#39;workbox-window&#39;;کد زیر داخل فانکشن قرار میگیردif (&#39;serviceWorker&#39; in navigator) { const wb = new Workbox(&#39;/sw.js&#39;);    wb.addEventListener(&#34;waiting&#34;, event =&gt; {        .reload();        wb.messageSW({type: &#34;SKIP_WAITING&#34;});    });    wb.register();}وقتی تغییری در کدهاتون میدین و روی سرور آپلود میکنین ServiceWorker جدیدی ساخته میشه و در حالت انتظار میمونه تا دستی به روش های گوناگون و یا بسته شدن کامل پنجره وبسایت و باز شدن مجدد, نصب بشه اما با کد فوق نیازی به این کار نیست و ما یک پیغام به WorkBox میدیم و این انتظار رو رد کرده (ادامه کار در sw.js انجام میشه) و Service worker جدید رو نصب میکنیم و پس از آن پنجره رو اتوماتیک رفرش میکنیم.خب کار نصب و راه اندازی تا اینجا به اتمام میرسه, تمام فایل های cache میشه و در حالت افلاین هم وب اپلیکیشن شما اجرا میشه. قبل از راه اندازی WorkBox اگر به اپلیکیشن خود مراجعه کرده و inspect بگیرید به این شکل خواهد بود:اما بعد از راه اندازی WorkBox به این شکل داریم:۱۰. برای debug کردن ساده‌تر و اینکه ببینید چه اتفاقاتی رخ میده کد زیر رو داخل sw.js میتونید قرار بدید:workbox.setConfig({ debug: true });امیدوارم تونسته باشم مطلب رو بخوبی ارایه کنم و فرصتی باشه تا ادامه مطلب رو هم قرار بدم, برای دسترسی به کد ها از اینجا میتوانید اقدام کنید.</description><category>طاها خضوعی | Taha Khozooie</category><author>طاها خضوعی | Taha Khozooie</author><pubDate>Tue, 05 May 2020 11:39:45 +0430</pubDate></item></channel></rss>