מערכת ה-REST API של וורדפרס היא תכונה חזקה שמאפשרת למפתחים לתקשר עם נתוני האתר בצורה תכנותית. למרות שהיא שימושית עבור Headless WordPress, אפליקציות מותאמות וקריאות AJAX – היא גם עלולה לחשוף מידע רגיש אם לא מאובטחת כראוי.
כברירת מחדל, ה-REST API מאפשרת למשתמשים לא מזוהים גישה למגוון נקודות קצה (endpoints), כולל פרטים על משתמשים, פוסטים וטקסונומיות.
בפוסט הזה נעבור על כמה שיטות בטוחות לאבטחת REST API מבלי לשבש פונקציונליות ליבה או תוספים שתלויים בה.
למה חשוב לאבטח את REST API?
חלק מנקודות הקצה ב-API חושפות מידע שיכול לשמש תוקפים לאיסוף נתונים או להתקפות Brute Force. לדוגמה:
/wp-json/wp/v2/users
– מציג את כל המשתמשים (כולל שמות משתמש)/wp-json/wp/v2/posts
– ציבורי כברירת מחדל, אפילו פוסטים שלא פורסמו במקרים מסוימים
אבטחת נקודות קצה כאלו יכולה לעזור למנוע התקפות פישינג, Brute Force וגניבת תוכן.
אפשרות 1: הגבלת גישה רק למשתמשים מחוברים
באפשרותכם לאפשר גישה ל-REST API רק למשתמשים שמחוברים למערכת על ידי הוספת הקוד הבא לקובץ functions.php
של התבנית או לפלאגין משלכם:
add_filter('rest_authentication_errors', function($result) {
if (!is_user_logged_in()) {
return new WP_Error('rest_forbidden', 'עליכם להיות מחוברים כדי לגשת ל-REST API.', array('status' => 401));
}
return $result;
});
שימו לב: קוד זה יחסום כל גישה לא מזוהה ל- REST API כולל קריאות AJAX מהצד הקדמי שמתבססות על נקודות קצה ציבוריות. השתמשו בזהירות.
אפשרות 2: הגבלת נקודות קצה מסוימות בלבד
אם ברצונכם לחסום רק נקודות קצה מסוימות (כמו רשימת המשתמשים), השתמשו בגישה ממוקדת יותר:
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
return $endpoints;
});
שיטה זו משביתה את הגישה ל-/users
תוך שמירה על יתר ה-API פעיל ונגיש.
אפשרות 3: חסימת REST API לפי תפקידי משתמש
באפשרותכם להגביל גישה לפי תפקיד המשתמש. לדוגמה, ניתן לחסום גישה ל-REST API עבור משתמשים בתפקיד "מנוי":
add_filter('rest_authentication_errors', function($result) {
if (is_user_logged_in() && current_user_can('subscriber')) {
return new WP_Error('rest_forbidden', 'למנויים אין הרשאה לגשת ל-REST API.', array('status' => 403));
}
return $result;
});
אפשרות 4: הסתרת מידע רגיש מהציבור
במקום לחסום את נקודת הקצה לחלוטין, באפשרותכם לסנן שדות רגישים מתוך תגובת ה-API:
add_filter('rest_prepare_user', function($response, $user, $request) {
if (!current_user_can('edit_users')) {
$response->data['email'] = ''; // הסתרת כתובת האימייל
$response->data['name'] = ''; // הסתרת שם התצוגה
}
return $response;
}, 10, 3);
אפשרות 5: שימוש בתוסף אבטחה
תוספים כמו Wordfence, iThemes Security או Disable REST API מאפשרים לכם לשלוט על הגישה ל-API באמצעות ממשק פשוט – בלי לכתוב קוד. כלים אלו מספקים שליטה מדויקת לפי תפקיד משתמש או סוג תוכן.
בדיקת רמת האבטחה של ה-API
כדי לבדוק את ההגדרות שביצעתם, היכנסו לכתובות הבאות:
https://yoursite.com/wp-json/
– לצפייה בכל המסלולים הזמיניםhttps://yoursite.com/wp-json/wp/v2/users
– לבדוק אם נתוני משתמשים עדיין חשופים
השתמשו בכלים כמו Postman או בלשונית הרשת (Network) של כלי המפתחים בדפדפן כדי לבדוק תגובות ולוודא שהגישה אכן מוגבלת.
לסיכום
ה-REST API חיונית למרכיבים מודרניים רבים בוורדפרס, אך חשוב לא פחות לאבטח אותה. בין אם תבחרו להסתיר מידע רגיש, לחסום נקודות קצה מסוימות או להפעיל הגבלות לפי תפקיד – המטרה היא לצמצם חשיפה בלי לשבור פונקציונליות באתר.
צריכים עוד עזרה באבטחת האתר שלכם? קראו את המדריך המלא שלנו לחיזוק אבטחת וורדפרס.