הסתירו את גרסת המערכת מפני אחרים על מנת להסיר את הצגת הגרסה, כל שצריך לעשותו הוא לגשת אל קובץ הfunctions.php ולהוסיף את הקוד הבא:
function wp_version_remove_version() { return ''; } add_filter('the_generator', 'wp_version_remove_version');
השביתו את העריכה במרכז השליטה של המערכת על מנת לפתור ולחסום את אופציית העריכה דרך פאנל הניהול, יש לגשת אל קובץ ה wp-config.php ולהכניס בתוכו את הקוד הבא
define('DISALLOW_FILE_EDIT', true);
הגנו על קובץ ה wp-config העתק את הקוד למטה לקובץ- .htaccess בכדי למנוע גישה לקובץ
<files wp-config.php>
order allow,deny
deny from all
</files>
על ידי חסימת ביצוע קבצי PHP בספריות מסוימות, הקוד מציין לשרת אפאצ'י לחסום את ביצוע קבצי PHP בתיקיית
/wp-content/uploads/
. על מנת לבצע פעולה זו פתחו קובץ חדש בשם
.htaccess
הכניסו לתוכו את הקוד ושמרו ולאחר מכן העלו את הקובץ לנתיב
/wp-content/uploads/
<Files *.php>
deny from all
</Files>
Options -Indexes
השתמשו בכותרות אבטחה הוסיפו את הקוד באופן עצמאי על ידי שינוי קובץ ה
function.php
header('Content-Security-Policy: default-src https:');
header( 'X-FRAME-OPTIONS: SAMEORIGIN' );
header('X-XSS-Protection: 1; mode=block');
header('X-Content-Type-Options: nosniff');
header('Strict-Transport-Security:max-age=31536000; includeSubdomains; preload');
header("Permissions-Policy: accelerometer 'none' ; ambient-light-sensor 'none' ; autoplay 'none' ; camera 'none' ; encrypted-media 'none' ; fullscreen 'none' ; geolocation 'none' ; gyroscope 'none' ; magnetometer 'none' ; microphone 'none' ; midi 'none' ; payment 'none' ; speaker 'none' ; sync-xhr 'none' ; usb 'none' ; notifications 'none' ; vibrate 'none' ; push 'none' ; vr 'none' ");
header('Referrer-Policy: same-origin');
@ini_set('session.cookie_httponly', true);
@ini_set('session.cookie_secure', true);
@ini_set('session.use_only_cookies', true);
הפעילו תעודות SSL באתר הוורדפרס חיבור מאובטח ומוצפן בינך לבין השרת בעת הכניסה לאתר ובניהולו, הוסף את השורה הבאה לקובץ wp-config
define('FORCE_SSL_ADMIN', true);
השביתו את הקובץ xmlrpc הדבק את הקוד הבא בקובץ ה- .htaccess
# Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all allow from 123.123.123.123 </Files>
כותרות תגובת השרת מכילות מידע מפורט על גרסת PHP יש להניח שנצטרך לבקש מחברת האחסון להגדיר את שרת ה-HTTP כך שלא יציג מידע על גרסת PHP, אך עם זאת תוכל גם לנסות להוסיף את ההנחיות הללו בעצמך לקובץ .htacces
#start hide PHP version in header
<IfModule mod_headers.c>
Header unset X-Powered-By
Header unset Server
</IfModule>
#END hide PHP version in header
הגנה על נתיב WP-admin הציבו את הקוד הבא בקובץ functions אשר מתריע למערכת כי כל ניסיון כניסה אל הקובץ ישלח אל דף 404
add_action('init', 'alderity_blockusers_init');function alderity_blockusers_init() {
if (is_admin() && !current_user_can('administrator') && !(defined('DOING_AJAX') && DOING_AJAX)) {
// Redirect to a 404 error page
status_header(404);
exit();
}
}
שינוי נתיב ה- URL של WP-Login על מנת להגן על דף ההתחברות (WP-Login), ולמנוע ניסיונות כניסה לא מורשים.
הכניסו את הקוד הבא בקובץ functions והחליפו את "?=secret" במילת מפתח חדשה אשר אתם בוחרים מראש.
// disable login protection WordPress users
function alderity_protection_for_login_page() {
$secret_path = '?=secret';
$request = 'https://' . $_SERVER['SERVER_NAME'] . '/' . 'wp-login.php' . '?'. $_SERVER['QUERY_STRING'];
if ( site_url('/wp-login.php').$secret_path == $request ) {
} else {
header( 'Location: https://' . $_SERVER['SERVER_NAME'] . '/404' );
}
}
add_action('login_head', 'alderity_protection_for_login_page');
בכדי לגשת אל קובץ ההתחברות אנו נצטרך להכניס בכתובת הURL שלנו את הנתיב הבא your-domain.com/wp-login.php?=secret.
יש להחליף את "your-domain.com – בכתובת האתר שלכם".
ואת מילת המפתח "?=secret" שבחרתם מראש כמובן
השבתה קלה של USER REST API עבור JSON הכניסו את הקוד הבא לקובץ functions על מנת לחסום גישה
// Disable certain rest routes
add_filter( 'rest_endpoints', function( $endpoints ){
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] );
}
return $endpoints;
});
השבתה קלה לכלל REST API עבור JSON הכניסו את הקוד הבא לקובץ functions על מנת לחסום גישה
// Disable WordPress REST API add_filter('rest_enabled', '__return_false'); // Optional: If you want to disable REST API for users who are not logged in add_filter('rest_authentication_errors', function ($result) { if (!is_user_logged_in()) { return new WP_Error('rest_not_logged_in', 'You are not logged in.', array('status' => 401)); } return $result; });
על מנת להפעיל את הקודים מטה יש לפעול על פי ההנחיות הבאות יש לגשת אל קובץ הfunctions.php ולהוסיף את כלל הקודים הבאים
מסיר את קישור ה-RSD שעשוי לחשוף מידע על האתר ולאפשר התקפות מסוימות
remove_action('wp_head', 'rsd_link');
מסיר את מזהה הגרסה של וורדפרס מהקוד המקורי של הדף, מה שיעזור להפחית את סיכון פרצות כלי שבודקים את הגרסה ומחפשים חולשות בה
remove_action('wp_head', 'wp_generator');
מסיר את הקישור הנוצר ל-REST API מכותרת הדף.
remove_action('template_redirect', 'rest_output_link_header', 11);
מסיר את סקריפט הזיהוי של ה-Emoji, מספק בטחון מפני פעולות לא רצויות.
remove_action('wp_head', 'print_emoji_detection_script', 7);
מסיר את סגנונות ה-Emoji מהעיצוב, גם זה למניעת פעולות שלא רצויות.
remove_action('wp_print_styles', 'print_emoji_styles');
מסיר את סקריפט הזיהוי של ה-Emoji מלוח הבקרה, שכן הוא לא תמיד נחוץ למנהלי האתר.
remove_action('admin_print_scripts', 'print_emoji_detection_script');
מסיר את סגנונות ה-Emoji מלוח הבקרה.
remove_action('admin_print_styles', 'print_emoji_styles');
מסיר את קישורי REST API מהכותרת של הדף, כדי להפחית את המידע המוצג בכותרת ולמנוע חשיפה מיותרת של נתונים.
remove_action('wp_head', 'rest_output_link_wp_head');
מסיר קישורי גלישת נתוני oEmbed מהכותרת של הדף, כדי למנוע פעולות רצויות מהמזור.
remove_action('wp_head', 'wp_oembed_add_discovery_links');
מסיר את נתיב ה-REST API הקשור ל-oEmbed, מונע גישה למידע לא נחוץ.
remove_action('rest_api_init', 'wp_oembed_register_route');
מסתיר תוצאות oEmbed כאשר נתונים מתקבלים, מגן על מידע רגיש.
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
מסיר את ה-embed script המוסיף את האירוח של oEmbed, כדי למנוע פעולות שימוש לרעה במידע.
remove_action('wp_head', 'wp_oembed_add_host_js');
מסיר את ה-shortlink מהכותרת של הדף, כדי להפחית את המידע המוצג בכותרת.
remove_action('wp_head', 'wp_shortlink_wp_head', 10);