برای محافظت مؤثر از پایگاه داده وردپرس، درک نحوه استفاده وردپرس از پایگاه داده، آسیب پذیری های رایجی که توسط هکرها مورد سوء استفاده قرار میگیرند و اقدامات پیشگیرانه برای جلوگیری از این آسیب پذیری ها ضروری است. در این مطلب به نحوه افزایش امنیت دیتابیس وردپرس میپردازیم.
وردپرس چگونه از پایگاه داده استفاده میکند؟
وردپرس از PHP به عنوان زبان برنامه نویسی خود برای ذخیره سازی و بازیابی داده ها از پایگاه داده استفاده میکند و MySQL انتخاب ارجح برای مدیریت پایگاه داده است. کوئریهای SQL در نشانه گذاری PHP تعبیه شده اند تا عملکردهای مختلف را آسان کنند.
هنگام ورود به یک وبسایت وردپرسی، SQL مسئولیت رسیدگی به فرآیند ورود، استخراج شناسه کاربری، اعتبارسنجی آن و اطمینان از نمایش دادههای نمایه مناسب در قسمت front سایت را بر عهده دارد.
همکاری نزدیک بین PHP و SQL وردپرس را قادر می سازد تا تجربیات مبتنی بر محتوای دینامیک را برای کاربران ایجاد کند. این انعطافپذیری به محتوای سفارشیسازیشده اجازه میدهد تا نقشهای کاربری خاص مانند مدیران، ویرایشگران و مشترکان را هدف قرار دهد.
علاوه بر این، افزونه ها و قالبها از پایگاه داده وردپرس برای ذخیره و بازیابی داده ها استفاده میکنند و از پرس و جوهای SQL در نشانه گذاری PHP برای تولید پویا محتوا استفاده میکنند. برای مدیریت راحت پایگاه داده، از افزونه هایی مانند WP-DB Manager میتوان استفاده کرد.
چگونه پایگاه داده وردپرس را ایمن کنیم؟
پایگاه داده وردپرس مغز یک وب سایت وردپرسی است زیرا تمام اطلاعات مربوط به سایت مانند پست ها، صفحات، نظرات، برچسب ها، کاربران، دسته ها، فیلدهای سفارشی و سایر گزینه های سایت را ذخیره میکند.
این کار باعث میشود آن را به یک هدف جذاب برای هکرها تبدیل کند. هرزنامه ها و هکرها کدهای خودکار را برای تزریق SQL اجرا میکنند. در اینجا نحوه ایمن سازی پایگاه داده وردپرس آورده شده است.
1. نام کاربری Administrator را تغییر دهید
$table_prefix = ‘wp_ga2807_’;
وردپرس نیز مانند سایر سیستم های مدیریت محتوا دارای یک admin
پیش فرض است. عدم تغییر ورود پیش فرض مدیریت، آسیب پذیری وب سایت و پایگاه داده شما را در برابر دسترسی غیرمجاز توسط هکرها افزایش میدهد.
در وردپرس، نام کاربری پیش فرض “admin” است. اگر قبلاً این کار را انجام نداده اید، اکیداً توصیه میشود که فوراً آن را تغییر دهید. برای ادامه، به phpMyAdmin دسترسی پیدا کنید و عبارت زیر را اجرا کنید:
UPDATE {database_prefix}users SET user_login=’anything’ WHERE user_login=’admin’.
این کوئری نام کاربری را از “admin” به هر نام دلخواه تغییر میدهد. برای چند سایت وردپرس، میتوانید از تابع grant_super_admin() برای اعطای دسترسی و امتیازات ویژهادمین استفاده کنید.
2. ID Administrator را تغییر دهید
شما باید یک کاربر جدید با امتیازات مدیریتی ایجاد کنید و کاربر پیش فرض مدیریت را حذف کنید. این به جلوگیری از حملات SQL-injection و افزایش امنیت پایگاه داده وردپرس شما کمک میکند.
- به phpMyAdmin بروید
- کوئری های زیر را اجرا کنید.
UPDATE wp_users SET ID = 2807 WHERE ID = 1;
UPDATE wp_posts SET post_author = 2807 WHERE post_author = 1;
UPDATE wp_comments SET user_id = 2807 WHERE user_id = 1;
UPDATE wp_usermeta SET user_id = 2807 WHERE user_id = 1;
ALTER TABLE wp_users AUTO_INCREMENT = 2808
نکته: قبل از ایجاد هر گونه تغییر، اکیداً توصیه میشود که یک نسخه بکاپ تهیه کنید.
پس از هر تغییر ، بررسی عملکرد سایت برای اطمینان از عدم تداخل با سایر بخشهای سایت بسیار مهم است. در مورد چند سایت وردپرس، باید چندین خط را برای هر سایت تکرار کنید، همانطور که در زیر نشان داده شده است:
UPDATE wp_2_posts SET post_author = 5487 WHERE post_author = 1;
UPDATE wp_2_comments SET user_id = 5487 WHERE user_id = 1;
همچنین میتوانید پرس و جوها را در حلقه با استفاده از PHP و $wpdb
اجرا کنید.
3. پیشوند پایگاه داده را تغییر دهید
در طول فرآیند نصب وردپرس، اکیداً توصیه میشود که پیشوند پیش فرض که wp_ است را تغییر دهید تا از امنیت دیتابیس وردپرس اطمینان حاصل کنید.
اگر قبلاً این کار را نکردهاید، همین الان این کار را انجام دهید. این مراحل را دنبال کنید:
از طریق یک FTP به سایت خود دسترسی پیدا کنید.
به فایل پیکربندی wp_config.php بروید.
خط را با پیشوند wp_ پیدا کنید و آن را تغییر دهید.
$table_prefix = ‘wp_ga2807_’;
همه جداول پایگاه داده پیش فرض وردپرس را تغییر نام دهید.
RENAME TABLE wp_comments TO wp_ga2807_comments;
RENAME TABLE wp_links TO wp_ga2807_links;
RENAME TABLE wp_options TO wp_ga2807_options;
RENAME TABLE wp_postmeta TO wp_ga2807_postmeta;
RENAME TABLE wp_posts TO wp_ga2807_posts;
RENAME TABLE wp_terms TO wp_ga2807_terms;
RENAME TABLE wp_termmeta TO wp_ga2807_termmeta;
RENAME TABLE wp_term_relationships TO wp_ga2807_term_relationships;
RENAME TABLE wp_term_taxonomy TO wp_ga2807_term_taxonomy;
RENAME TABLE wp_usermeta TO wp_ga2807_usermeta;
RENAME TABLE wp_users TO wp_ga2807_users;
Replace all instances of wp_ in wp_ga2807_usermeta and wp_ga2807_options (former wp_usermeta and wp_options tables respectively).
UPDATE wp_ga2807_options SET option_name = REPLACE(option_name, ‘wp_’, ‘wp_ga2807_’) WHERE option_name LIKE ‘wp_%’;
UPDATE wp_ga2807_usermeta SET meta_key = REPLACE(meta_key, ‘wp_’, ‘wp_ga2807_’) WHERE meta_key LIKE ‘wp_%’;
-
پلاگین ها جداول خود را در پایگاه داده ایجاد میکنند. تغییر نام این جداول نیز مهم است. به عنوان مثال WooCommerce یک افزونه وردپرس پر استفاده است. برای تغییر نام جداول در ووکامرس کوئری های زیر را اجرا کنید.
RENAME TABLE wp_woocommerce_api_keys TO wp_ga2807_woocommerce_api_keys;
RENAME TABLE wp_woocommerce_attribute_taxonomies TO wp_ga2807_woocommerce_attribute_taxonomies;
RENAME TABLE wp_woocommerce_downloadable_product_permissions TO wp_ga2807_woocommerce_downloadable_product_permissions;
RENAME TABLE wp_woocommerce_order_itemmeta TO wp_ga2807_woocommerce_order_itemmeta;
RENAME TABLE wp_woocommerce_order_items TO wp_ga2807_woocommerce_order_items;
RENAME TABLE wp_woocommerce_payment_tokenmeta TO wp_ga2807_woocommerce_payment_tokenmeta;
RENAME TABLE wp_woocommerce_payment_tokens TO wp_ga2807_woocommerce_payment_tokens;
RENAME TABLE wp_woocommerce_sessions TO wp_ga2807_woocommerce_sessions;
در صورت لزوم، میتوانید پیشوند پایگاه داده را با استفاده از یک افزونه تغییر دهید. افزونه Change Table Prefix یک انتخاب مناسب برای انجام این کار است.
4. محدود کردن دسترسی کاربر پایگاه داده
برای افزایش امنیت پایگاه داده وردپرس، توصیه میشود امتیازات سختگیرانه کاربر را اعمال کنید. کاربر MySQL ذکر شده در فایل wp-config.php باید دارای امتیازات محدودی باشد.
در ابتدا، در طول فرآیند نصب، به کاربر پایگاه داده امتیازات کامل برای ایجاد جداول و اشیاء ضروری اعطا میشود. با این حال، این فقط باید یک ترتیب موقت باشد. پس از اتمام نصب، کاربر MySQL فقط باید امتیازات DATA READ و DATA WRITE را حفظ کند.
5. بکاپ بگیرید
قبل از ایجاد هر گونه تغییر در سایت یا پایگاه داده خود، ایجاد یک نسخه بکاپ بسیار مهم است. پشتیبان گیری منظم از داده های خود میتواند در صورت بروز مشکل بسیار مفید باشد. با بازگردانی نسخه پشتیبان، میتوانید به راحتی فایل های آلوده را حذف کنید.
6. جداول سفارشی را حذف کنید
برای جلوگیری از انباشته شدن تعداد زیادی جداول استفاده نشده در پایگاه داده خود، توصیه میشود پس از حذف پسوند وب سایت، جداول اضافی را حذف کنید. برخی از افزونه ها ممکن است تنظیماتی داشته باشند که به طور خودکار تمام داده های مرتبط را از وب سایت و پایگاه داده شما پس از حذف نصب حذف کند.
سوالات متداول
چگونه میتوانم پایگاه داده وردپرس خود را ایمن کنم؟
– از نام کاربری و رمز عبور پایگاه داده قوی و منحصر به فرد استفاده کنید.
– به طور مرتب وردپرس و افزونه های آن را به آخرین نسخه به روز کنید.
– دسترسی به پایگاه داده را تنها با اجازه دادن به آدرس های IP خاص یا لوکال هاست محدود کنید.
– یک فایروال برنامه وب (WAF) برای مسدود کردن ترافیک مخرب پیاده سازی کنید.
– به طور منظم از پایگاه داده خود نسخه پشتیبان تهیه کنید و آن را در مکانی امن ذخیره کنید.
– هر گونه پلاگین و تم غیر ضروری یا استفاده نشده را حذف کنید.
– از استفاده از پیشوندهای رایج جدول پایگاه داده برای سختتر کردن مهاجمان خودداری کنید.
– استفاده از یک افزونه امنیتی را در نظر بگیرید که ویژگی های امنیتی پایگاه داده را ارائه میدهد.
برخی از آسیب پذیری های رایج در پایگاه های داده وردپرس چیست؟
– پسوردهای پایگاه داده ضعیف یا به راحتی قابل حدس زدن.
– نسخه های قدیمی وردپرس یا افزونه های آن.
– پلاگین ها یا تم های ناامن با آسیب پذیری های شناخته شده.
– حملات تزریق SQL به دلیل پلاگین ها یا تم های کدگذاری نادرست.
– مجوزهای فایل ناامن یا ضعیف در سرور پایگاه داده.
– حملات اسکریپت بین سایتی (XSS) از طریق افزونه های آسیب پذیر.
– حملات Brute-force در تلاش برای حدس زدن اعتبار پایگاه داده.
چگونه میتوانم فعالیت های مشکوک را در پایگاه داده وردپرس خود نظارت و شناسایی کنم؟
– یک پلاگین امنیتی نصب کنید که ویژگی های نظارت و ثبت پایگاه داده را فراهم میکند.
– به طور منظم گزارش های پایگاه داده را برای هرگونه فعالیت غیرمعمول یا مشکوک بررسی کنید.
– اعلانهای ایمیل را برای رویدادهای مهم پایگاه داده، مانند تلاش برای ورود به سیستم یا تغییرات پایگاه داده، فعال کنید.
– از ابزارهای سیستم های تشخیص نفوذ (IDS) یا نظارت بر یکپارچگی فایل (FIM) استفاده کنید تا هر گونه تغییر غیرمجاز را به شما اطلاع دهند.
– از لاگ های سرور و گزارش های دسترسی برای شناسایی ترافیک یا الگوهای غیرعادی استفاده کنید.
– یک سرویس نظارت بر آپتایم وب سایت راه اندازی کنید تا تشخیص دهد که آیا سایت شما به طور غیرمنتظره آفلاین میشود یا خیر.