<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mahdi Karamzadegan</title>
        <link>https://virgool.io/feed/@mahdi.karamzadegan</link>
        <description>Interested in teaching, web app security and network</description>
        <language>fa</language>
        <pubDate>2026-06-17 02:27:25</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1752459/avatar/M2lSUU.jpg?height=120&amp;width=120</url>
            <title>Mahdi Karamzadegan</title>
            <link>https://virgool.io/@mahdi.karamzadegan</link>
        </image>

                    <item>
                <title>رمزنگاری به زبان آدمیزاد</title>
                <link>https://virgool.io/@mahdi.karamzadegan/%D8%B1%D9%85%D8%B2%D9%86%DA%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A2%D8%AF%D9%85%DB%8C%D8%B2%D8%A7%D8%AF-wc4zzivan0v6</link>
                <description>رمزنگاری یک موضوع بزرگ است. ما قصد داریم اصول اولیه آن را بررسی کنیم تا شما درک پایه‌ای از آن داشته باشید. رمزنگاری توسط طیف گسترده‌ای از برنامه‌ها استفاده می‌شود و تقریباً در همه جای اینترنت کاربرد دارد.چرا به رمزنگاری نیاز داریم؟بدون رمزنگاری، ارتباطات از طریق اینترنت بسیار ناامن خواهد بود و هر کسی می‌تواند به راحتی داده‌های شما را مشاهده کند. خوشبختانه اینطور نیست، و تقریباً تمام داده‌هایی که شما از اینترنت دریافت یا ارسال می‌کنید، رمزگذاری شده و به صورت متن ساده توسط کسی که به آن دسترسی پیدا می‌کند قابل مشاهده نیست. اکنون بیایید به جزئیات بیشتری از رمزنگاری بپردازیم. دو نوع رمزنگاری وجود دارد:متقارننامتقارنرمزنگاری متقارن چیست؟فرض کنید باب می‌خواهد پیامی به آلیس ارسال کند، اما او نمی‌خواهد پیام به صورت متن ساده ارسال شود زیرا هر کسی می‌تواند آن را بخواند.باب یک دستورالعمل دارد که چگونه حروف را به صورتی به هم بریزد که هیچ کس نتواند معنای آن را بفهمد (این رمزگذاری-encryption نامیده می‌شود). باب هم همان دستورالعمل را دارد اما او از آن استفاده می‌کند تا حروف را مرتب کند و دوباره قابل خواندن شود (این رمزگشایی- decryption نامیده می‌شود)، و او متوجه خواهد شد که باب چه نوشته است. به این دستورالعمل در رمزنگاری &quot;Key&quot; گفته می‌شود. در رمزنگاری متقارن، هر دو کاربر کلید یکسانی برای رمزگذاری و رمزگشایی پیام‌ها دارند.رمزنگاری نامتقارن چیست؟در رمزنگاری نامتقارن، کلیدهای رمزگذاری و رمزگشایی متفاوت هستند. کلید رمزگذاری فقط برای رمزگذاری استفاده می‌شود و نمی‌توان از آن برای رمزگشایی استفاده کرد و بالعکس. کلید رمزگذاری &quot;Public key&quot; و کلید رمزگشایی &quot;Private key&quot; نامیده می‌شود.چرا از رمزنگاری نامتقارن استفاده می‌شود؟زیرا امنیت بیشتری دارد! اگر از رمزنگاری متقارن استفاده کنید و کسی کلید شما را بدست آورد، می‌تواند پیام‌هایی را که ارسال می‌کنید رمزگذاری و رمزگشایی کند. اما در رمزنگاری نامتقارن، کسی نمی‌تواند پیام‌هایی را که شما با استفاده از کلید عمومی رمزگذاری کرده‌اید، رمزگشایی کند. فقط کسی که کلید خصوصی را دارد می‌تواند آن‌ها را رمزگشایی کند. بیایید یک مثال بزنیم:آلیس می‌خواهد با باب صحبت کند.آلیس پیام خود را با استفاده از کلید عمومی رمزگذاری کرده و به باب ارسال می‌کند.باب پیام را با استفاده از کلید خصوصی خود رمزگشایی می‌کند و پاسخی به آلیس می‌دهد.و این‌گونه مکالمه ادامه می‌یابد...توجه: رمزنگاری متقارن سریع‌تر از رمزنگاری نامتقارن است، اما رمزنگاری نامتقارن امن‌تر است.
هش چیست ؟هش‌ها رشته‌های طولانی از حروف و اعداد هستند که توسط الگوریتم‌های هش‌سازی تولید می‌شوند. آن‌ها متن ساده را گرفته و آن را به هش تبدیل می‌کنند.نکته مهم درباره هش‌ها این است که غیرقابل بازگشت هستند. هیچ راهی برای decrypt/decode یک هش وجود ندارد.الگوریتم‌های هش‌سازی محبوب عبارتند از: MD5 (Message Digest 5) و SHA (Secure Hash Algorithm).این همان شکلی است که کلمه &quot;hello&quot; به عنوان یک هش MD5 دارد:5d41402abc4b2a76b9719d911017c592هش‌ها برای چه استفاده می‌شوند؟محبوب‌ترین استفاده از هش‌ها برای شناسایی فایل و ذخیره داده‌های حساس، مانند رمزهای عبور است. وقتی شما یک حساب کاربری در یک وب‌سایت ایجاد می‌کنید، رمز عبور شما به یک هش تبدیل می‌شود و این هش در پایگاه داده سرور ذخیره می‌شود. بنابراین، وقتی وارد حساب کاربری خود می‌شوید، رمزی که وارد می‌کنید به یک هش تبدیل می‌شود و سرور آن را گرفته و با هش موجود در پایگاه داده مقایسه می‌کند. اگر آن‌ها یکی باشند، یعنی رمز عبور شما درست است و سرور به شما اجازه ورود می‌دهد.هش‌های MD5 همچنین برای اطمینان از یکپارچگی داده‌های فایل‌ها استفاده می‌شوند. زیرا الگوریتم هش‌سازی MD5 همیشه برای یک ورودی مشخص، خروجی یکسانی تولید می‌کند. بنابراین می‌توان از هش یک فایل منبع با هش جدیدی که از فایل مقصد ساخته شده مقایسه کرد تا مطمئن شد که فایل سالم و بدون تغییر باقی مانده است.الگوریتم‌های هش‌سازی زیادی وجود دارند که آن‌ها را در اینجا پوشش نخواهیم داد. تفاوتی بین رمزگذاری و کدگذاری وجود دارد. فرض کنید شما یک فایل رمزگذاری‌شده دارید، تنها راه برای رمزگشایی آن استفاده از کلید است. در حالی که داده‌های کدگذاری‌شده را می‌توان بلافاصله و بدون کلید رمزگشایی کرد. این یک شکل از رمزنگاری نیست، بلکه فقط یک روش نمایش داده‌هاست.یکی از کدگذاری‌های بسیار محبوب Base64 است. این‌گونه است که &quot;hi there&quot; با کدگذاری Base64 نمایش داده می‌شود:aGkgdGhlcmU=Source:TryHackMe</description>
                <category>Mahdi Karamzadegan</category>
                <author>Mahdi Karamzadegan</author>
                <pubDate>Wed, 11 Sep 2024 17:14:50 +0330</pubDate>
            </item>
                    <item>
                <title>فایروال بزرگ چین</title>
                <link>https://virgool.io/@mahdi.karamzadegan/%D9%81%D8%A7%DB%8C%D8%B1%D9%88%D8%A7%D9%84-%D8%A8%D8%B2%D8%B1%DA%AF-%DA%86%DB%8C%D9%86-dbpcoay6udkv</link>
                <description>بزرگترین و پیچیده ترین سیستم سانسورینگ اینترنت در جهان که توسط چین به کار گرفته شده است .سیاست های چین در قبال اینترنت و گردش آزاد اطلاعات از همان ابتدای عمومی شدن اینترنت در این کشور در سال 1995 سخت‌گیرانه بوده است . پروژه &quot;دیوار بزرگ آتش&quot; که پیچیده ترین سیستم فیلترینگ اینترنت در جهان است ادامه یافته‌ی پروژه قدیمی تر &quot;سپر طلایی&quot; است . پروژه سپر طلایی در سال 1998 توسط وزارت امنیت عمومی چین و با حمایت کامل حزب کمونیست چین آغاز به کار کرد . فسلفه‌ی وجودی آن خیلی قبل تر از وجود اینترنت در این کشور توسط دنگ شیائوپینگ بیان شده بود :اگر پنجره را برای هوای تازه باز کنید، باید منتظر ورود چند مگس نیز باشیددولت چین با استدلال به این موارد که استفاده از اینترنت نباید امنیت شهروندان و جامعه  و دولت را به خطر بیاندازد شروع به توسعه این پروژه کرد, به طوریکه پیشرفت مستمر آن باعث شد که نام دیوار بزرگ آتش را به آن نسبت بدهند که از ترکیب دو اسم دیوار آتش (Firewall) و دیوار بزرگ چین به وجود آمده است .فایروال برنامه‌ای است که بین کاربر و سرور قرار میگیرد و کاربرد عمومی آن, این است که با کنترل ترافیک دریافتی از ورود بدافزار ها و داده های خطرناک جلوگیری می‌‌‌کند. هر چند در پروژه فیلترینگ, محتوای آلوده‌ای از نظر فنی وجود ندارد و کنترل بر عناوینی است که از نظر قانون چین, مجرمانه خطاب شده‌اند . متود های مسدودسازی ? :1 - مسدود سازی IP : همانطور که می‌دانید انتقال داده ها بین مبدا و مقصد با کمک IP ها صورت می‌‌گیرد . ایپی ها اساس آدرس‌دهی در اینترنت هستند . حال در پایین ترین سطح از فیلترینگ,  یکی از روش ها, مسدود کردن آیپی می‌باشد . برای مثال به طور مستقیم ایپی یک سرویس خارجی مثل Facebook را در لیست سیاه قرار می‌دهند تا از دسترسی به آن جلوگیری کنند . 2 - مسدود سازی URL : به جای IP به صورت مستقیم مسدود سازی را در سطح URL و Domain name انجام می‌دهند . یعنی قبل از اینکه Domain به مرحله تبدیل شدن به ایپی برسد با بررسی هدر ریکوئست HTTP آن را مسدود میکند . 3 - جعل DNS : چون به یادسپاری ایپی های عددی برای ما دشوار است, ما Domain name ها را به وجود آوردیم . اکنون سیستمی که ایپی های عددی را به دامین ها مرتبط میکند, DNS نام دارد . DNS سرور های پابلیک بزرگی ,مثل سرور 8.8.8.8 گوگل ,در جهان وجود دارند . بر خلاف تصور , این سرور ها در چین مسدود نشده‌اند . اما اگر کاربر به دنبال محتوایی باشد که ممنوع است یا به دنبال دامین هایی بگردد که در لیست سیاه قرار دارند ,قبل از اینکه بخواهد پاسخی را از DNS سرور گوگل دریافت کند . یک DNS سرور ساختگی که حاوی اطلاعات غلط است زودتر ایپی اشتباه را به کاربر ارسال می‌کند تا او را به صفحه هشدار یا صفحه از پیش تعیین شده ریدایرکت کند . مثلا کاربر در مرورگر خود youtube.com را سرچ میکند ولی ایپی 127.0.0.1 که ایپی لوکال هاست است را برایش ارسال می‌کند . در این حالت محتوایی برای کاربر بارگیری نمی‌شود . 4 - بازرسی عمقی پکت ها (DPI) : از سال 2012 به بعد فایروال بزرگ از این روش برای شناسایی و مسدود سازی VPN ها استفاده کرد . در این متود با بررسی و مانیتور کردن ترافیک کاربران و همچنین با آنالیز و تحلیل کردن این داده ها میتوانند بفهمند هر کاربر از چه پروتکلی استفاده می‌کند . این روش حتی قادر است پروتکل های رمزنگاری شده Tunneling مانند SSL و پروتکل های Tor و دیگر پروتکل هایی که برای VPN استفاده می‌شوند را شناسایی کرده و با کاهش پهنای باند سرور VPN مورد نظر از دسترسی کاربران به آن سرویس جلوگیری کند .5 - جعل پکت TCP : فایروال بزرگ می‌تواند یک ارتباط TCP را با جعل کردن یک پکت بازنشانی به پایان برساند . در واقع در این روش ،درخواست ها یا پاسخ های TCP مسدود نمی‌شوند بلکه با ارسال یک پکت جعلی مخرب-که حاوی محتوای پایان گرفتن ارتباط است-به ارسال‌کننده محتوا , ارتباط را قطع می‌کند. موثرترین روش برای جلوگیری از این کار , نادیده گرفتن پکتی است که از فایروال به ما ارسال می‌شود. ابزار های مختلفی برا نادیده گرفتن این پکت ها توسعه داده شده است.</description>
                <category>Mahdi Karamzadegan</category>
                <author>Mahdi Karamzadegan</author>
                <pubDate>Thu, 07 Sep 2023 23:57:41 +0330</pubDate>
            </item>
                    <item>
                <title>HTTP Basics</title>
                <link>https://virgool.io/@mahdi.karamzadegan/http-basics-tsd4cldnffmd</link>
                <description>پروتکل HTTP چیست ? ؟ محتوای وب بر پایه وب سرور ها اجرا می شود .وب سرور از طریق پروتکل HTTP صحبت می کند .برای همین به وب سرور ها ,HTTP server هم می گویند .وب سرور ها داده های اینترنت را ذخیره می کنند و زمانی که یک کلاینت از آنها درخواست کند به آن پاسخ می دهند .برای نمونه : مرورگر های وب یک HTTP client هستند .وب سرور ها میزبان web resource ها هستند . وب ریسورس در واقع منابع محتوای موجود در وب هستند . مثل : HTML ,Text file , JPEG image , etcوب ریسورس ها می توانند استاتیک باشند که شکل ثابت و بدون تغییری دارند مانند مواردی که در بالا عنوان شد. می توانند داینامیک باشند که بر اساس هویت یا شرایط در لحظه تغییر بکند . مثل : تصویر لایو یک دوربین, نرخ ارزها در بازار های معاملاتی و موجودی کالا ها در یک فروشگاه آنلاین…در HTTP ,هر فایلی که انتقال پیدا میکنه با دیتا فرمتی به نام MIME نشانه گذاری میشه.در بخش header یک پیام HTTP ما میتوانیم این نشانه گذاری رو ببینیم .روبروی خط content-type نوع عنصر مورد نظر قبل از (/) به صورت عام و بعد از اون به صورت خاص اومده .در تصویر بالا, ما با فایلی از گروه text و به صورت جزئی تر با یک فایل html روبرو هستیم .آدرس URI : مثل آدرس پستی برای یک محتوا در بستر وب انحصاری هستند .آدرس URL : به صورت خاص با تعریف 1 - نوع پروتکل, 2- سرور, 3- لوکال ریسورس نحوه دسترسی به اون ریسورس را مشخص میکند .آدرس URN : یک نام منحصر به فرد برای بخشی از محتواست, جدا از اینکه در کجا قرار دارد یا ازش استفاده میشه . بخش اول یک URL ,نامش scheme است که نوع پروتکل برای دسترسی به محتوا را بیان میکند .دومین بخش آدرس اینترنتی سرور است و باقی هم نام محتوا هایی هستند که در وب سرور قرار دارند. متود ها ?: پروتکل HTTP از ریکوئست های زیادی استفاده میکند که به آن HTTP ریکوئست گفته میشود . متود GET  : ریسورس را از سرور به کلاینت ارسال میکند .متود PUT  : داده را به سرور ارسال میکند , معمولا برای بروزرسانی یک رکورد خاص از آن استفاده میکنیم .متود Post  : داده را در سرور ایجاد میکند , معمولا برای ایجاد یک رکورد خاص از آن استفاده میکنیم .متود Delete  : یک ریسورس را در سرور حذف میکند .برای نمایش یک صفحه ممکن است ,چندین ریکوئست ارسال شود . مثلا اول HTML را دریافت کند بعد CSS و بعدی کد های JS باشد .کد های وضعیت و پیام ها  ? :ریسپانس های HTTP با یک عدد سه رقمی وضعیت ریکوئست را مشخص میکنند .404 Code : محتوا در سرور پیدا نشد302 Code : ریدایرکت200 Code : OKپیام های HTTP به دلیل خط به خط و دنباله دار بودن بسیار ساده نوشته شده‌‌‌‌‌‌اند و خواندنش برای انسان ها راحت است .به پیام هایی که از سمت کلاینت به سرور ارسال میشوند , Request گفته میشود .به پیام هایی که از سرور به کلاینت ارسال میشوند , Response می گویند .پیام های HTTP سه قسمت اصلی دارند :۱ - بخش Start line : خط اول پیام که مشخص میکند چه کاری باید انجام شود یا وضعیت ریسپانس چگونه است .۲ - بخش Header : یک پیام میتواند صفر یا تعدادی هدر داشته باشد ,که فرمت آن به شکل Value است.در پایان هدر یک خط خالی قرار میگیرد که هدر را از بادی جدا میکند .۳ - بخش Body : یک بخش اختیاری که که بعد از خط صاف قرار دارد ,میتواند شامل انواع دیتا از جمله فرمت باینری باشد ,برخلاف بخش استارت و هدر .مدل TCP/IP  ? : پروتکل HTTP یک پروتکل لایه اپلیکیشن است .اینترنت بر اساس مدل TCP/IP بنا شده است .ارتباط TCP سه چیز را فراهم میکند :1 - انتقال بدون خطا داده ها2 - انتقال به ترتیب داده ها3 - انتقال هر حجمی از داده هادر انتقال TCP , داده ها بین کلاینت و سرور منتقل میشوند بدون اینکه در مسیر گم شوند یا آسیب ببینند .قبل از اینکه ارتباطی بین کلاینت و سرور برقرار شود ,باید یک کانکشن TCP/IP به وسیله IP و Port ایجاد شود .از آنجایی که URL ها آدرس ریسورس ها هستند ,میتوانند IP سیستمی که که ریسورس موردنظر بر روی آن قرار دارد را به ما بدهد .ممکن است URL به صورت مستقیم IP عددی را دارا باشد .هم میتواند از hostname به جای IP عددی استفاده بکند .اگر در URL ,جلوی hostname یا IP پورتی نوشته نشده باشد .پورت آن به صورت پیش فرض 80 است .که پورت پروتکل HTTP است .با استفاده از ابزار های Telnet و Netcat میتوانیم به صورت مستقیم با وب سرور ارتباط برقرار کنیم .در این حالت وب سرور گمان میکند که ما یک HTTP client هستیم.پروکسی ها ? :برای اهداف امنیتی ,ادغام اپلیکیشن ها و کارایی بهتر از Proxy Server ها استفاده میشود .پروکسی ها اغلب بخشی از Firewall در نظر گرفته میشوند .آن ها بین کلاینت و سرور قرار میگیرند ,همانند یک واسطه با بررسی Request و Response ها از دسترسی و اتصالات غیرمجاز و خطرناک جلوگیری میکنند .مثلا ویروس ها را شناسایی میکنند و با فیلتر کردن از انتقال آن ها جلوگیری میکنند .مورد دیگر Web cache ها هستند که نوعی از پروکسی هستند. آن‌ها یک کپی از فایل ها یا وبسایت هایی که زیاد استفاده میشوند را در خود ذخیره میکند . این کار باعث میشود فرد سریعتر به محتوا دسترسی پیدا کند و همچنین پهنای باند اینترنت برای کار دیگری آزاد شود .در نهایت شاید به صورت عادی متوجه نشویم که اطلاعات را از سرور اصلی دریافت کرده‌ایم یا از یک کش سرور … .موارد دیگر ?  :وقتی دو شبکه از پروتکل های انتقال متفاوتی استفاده میکنند ما از یک سرور واسطه که Gateway نامیده می شود استفاده میکنیم .بین دو شبکه Gateway ها اغلب کار تبدیل پروتکل ها را انجام می‌دهند . مثلا HTTP را به FTP تبدیل میکنند .تونل ها یا HTTP tunnels بدون اطلاع از محتوای داده ها, آن ها را انتقال می‌دهند .تونل ها معمولا اطلاعات و داده های غیر HTTP را به وسیله یک یا چندین ارتباط HTTP منتقل میکنند .مثلا می‌توانند اطلاعات SSL را منتقل کنند.</description>
                <category>Mahdi Karamzadegan</category>
                <author>Mahdi Karamzadegan</author>
                <pubDate>Mon, 28 Aug 2023 02:49:28 +0330</pubDate>
            </item>
                    <item>
                <title>ارور در نصب افزونه WooCommerce</title>
                <link>https://virgool.io/Rocket/%D8%A7%D8%B1%D9%88%D8%B1-%D8%AF%D8%B1-%D9%86%D8%B5%D8%A8-%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-woocommerce-zsldrbdnt5au</link>
                <description>هنگام کار با وردپرس بر روی لوکال هاست به خصوص در استفاده از XAMPP ممکن است با مشکلاتی مواجه شوید . یکی از این مشکلات ارور زیر در نصب افزونه WooCommerce است :Fatal error: Maximum execution time of 120 seconds exceeded in C:\xampp\apps\wordpress\htdocs\wp-admin\includes\class-wp-filesystem-direct.php on line 82 .برای حل این ارور مراحل زیر را طی کنید : 1 - وارد پنل XAMPP شوید و در بخش وب سرور Apache , گزینه confing را انتخاب کنید .2 - روی گزینه &quot;(php.ini)PHP&quot; کلیک کنید .3 - در این قسمت از Ctrl + F استفاده کنید و عبارت زیر را جستجو کنید :&quot; max_execution_time &quot;4 - در اینجا باید  &quot;max_execution_time = 120&quot; را مشاهده کنید , در ادامه عدد جلوی عبارت را به یک عدد بیشتر مثل 180 تغییر دهید .5 - فایل را save کنید و خارج شوید .6 - سرور Apache را دوباره start کنید . 7 - اکنون میتوانید به پیشخوان وردپرس خود رفته و افزونه مورد نظر را نصب کنید . امیدوارم این مطلب برای شما مفید بوده باشد .</description>
                <category>Mahdi Karamzadegan</category>
                <author>Mahdi Karamzadegan</author>
                <pubDate>Fri, 19 Aug 2022 17:41:19 +0430</pubDate>
            </item>
            </channel>
</rss>