הגדרת הרשאות גישה לקבצי מדיה ב-1C-Bitrix

הגדרת הרשאות גישה לקבצי מדיה ב-1C-Bitrix תארו לעצמכם שמנהל מעלה תמונה לכרטיס מוצר, ושעה לאחר מכן מנהל תוכן ממחלקה אחרת מוחק אותה בטעות. או שקובץ עם נתונים מסחריים הופך לנגיש באמצעות כתובת URL ישירה לאנשים מבחוץ. ב-1C-Bitrix סטנדרטית אינס
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת הרשאות גישה לקבצי מדיה ב-1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1457
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    879
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1162

הגדרת הרשאות גישה לקבצי מדיה ב-1C-Bitrix

תארו לעצמכם שמנהל מעלה תמונה לכרטיס מוצר, ושעה לאחר מכן מנהל תוכן ממחלקה אחרת מוחק אותה בטעות. או שקובץ עם נתונים מסחריים הופך לנגיש באמצעות קישור ישיר לאנשים מבחוץ. בהתקנת 1C-Bitrix סטנדרטית, ספריית המדיה אינה מספקת הרשאות גמישות — רק ברמת האוסף. לדוגמה, בחנות מקוונת גדולה עובדים 20 מנהלי תוכן, כל אחד אחראי על קטע קטלוג משלו. ללא הפרדת גישה, טעות אחת יכולה להשפיע על כל נתוני המחלקה. אנו פותרים בעיה זו באופן מקיף: מהגדרת הרשאות אוסף ועד אבטחת קבצים ברמת שרת האינטרנט. למעלה מ-50 פרויקטים מראים שיותר מ-90% דורשים בקרת גישה גרעינית, במיוחד עם אלפי נכסים וקבוצות מרובות.

כיצד להגדיר הרשאות לקבצי מדיה ב-Bitrix

הרשאות ברמת האוסף מאוחסנות בטבלת b_medialib_coll_right. מבנה: COLLECTION_ID, GROUP_ID, PERMISSION. רמות הרשאה: R (קריאה), W (כתיבה), X (ניהול). הן מוגדרות דרך הממשק: תוכן → ספריית מדיה → [לחיצה ימנית על אוסף] → הרשאות גישה. או באופן פרוגרמטי:

CMedialib::SetCollectionRights($collectionId, [ ['GROUP_ID' => $groupId, 'PERMISSION' => 'W'], ]); 

מהן המגבלות של הכלים הסטנדרטיים?

אוספים נוחים אך אינם מכסים את כל התרחישים. כאשר יש צורך להעניק גישה לקובץ בודד בתוך אוסף (לדוגמה, רק תמונת מוצר, לא את כל הסט), יש ליצור אוספים נפרדים לכל קובץ — זה לא ניתן להרחבה. יתרה מכך, הרשאות על קבצים פיזיים ב-/upload/ אינן פועלות: כל מי שיודע את הקישור יכול להוריד את המשאב, ללא צורך באימות.

כיצד להגביל גישה לקבצים פיזיים

קבצים ב-/upload/ נגישים ישירות דרך קישור ללא אימות — שרת האינטרנט מגיש אותם באופן סטטי, תוך עקיפת PHP. כדי לתקן זאת:

  1. העבר קבצים מוגנים לספרייה מחוץ ל-DocumentRoot או לתוך /upload/protected/.
  2. הגדר את שרת האינטרנט כך שבקשות לקבצים מוגנים יעברו דרך מטפל PHP.

עבור Nginx, הוסף location:

location ~* ^/upload/protected/ { internal; alias /var/www/upload/protected/; } 

סקריפט ה-PHP בודק את זכויות המשתמש ומגיש את הקובץ באמצעות CMedialib::SetCollectionRights($collectionId, [ ['GROUP_ID' => $groupId, 'PERMISSION' => 'W'], ]); :

if (!$USER->IsAuthorized() || !checkFileAccess($fileId)) { header('HTTP/1.0 403 Forbidden'); exit; } header('X-Accel-Redirect: /upload/protected/' . $filePath); header('Content-Type: ' . $mimeType); 

גישה זו מפחיתה את עומס ה-PHP פי שלושה בהשוואה להעברת כל התעבורה דרך מטפל. שמירה במטמון עם בדיקת הרשאות מזרזת את אימות הגישה פי 5–10. עם הגדרה נכונה, הפחתנו שגיאות גישה לקבצים ב-80% בפרויקט עם למעלה מ-10,000 נכסים מנוהלים.

הרשאות ברמת קובץ: מעבר לאוספים

עבור הרשאות לכל קובץ, צור טבלה נפרדת:

CREATE TABLE bl_medialib_file_rights ( file_id INT NOT NULL, group_id INT NOT NULL, permission CHAR(1) NOT NULL DEFAULT 'R', PRIMARY KEY (file_id, group_id) ); CREATE TABLE bl_file_access_log ( file_id INT NOT NULL, user_id INT NOT NULL, accessed_at DATETIME NOT NULL, ip VARCHAR(45) NOT NULL, result ENUM('allowed','denied') NOT NULL ); 

כאשר קובץ מוגן מתבקש, PHP בודק את חברות המשתמש בקבוצה (location ~* ^/upload/protected/ { internal; alias /var/www/upload/protected/; } ) ואם קיים רשומה עם ההרשאה הנדרשת. זה מספק גמישות מרבית אך דורש אופטימיזציה של שאילתות. השתמש בשמירה במטמון עם תגים להאצה.

הפרדה למחלקות שונות

תוכנית טיפוסית לחנות גדולה עם מספר מחלקות:

אוסף קבוצה הרשאה
/Catalog/Electronics מנהלי אלקטרוניקה W (קריאה + כתיבה)
/Catalog/Clothing מנהלי הלבשה W
/Marketing/Banners אנשי שיווק X (מלאה)
/Archive כל מנהלי התוכן R (קריאה בלבד)

קבוצות נוצרות דרך X-Accel-Redirect, משתמשים מתווספים דרך if (!$USER->IsAuthorized() || !checkFileAccess($fileId)) { header('HTTP/1.0 403 Forbidden'); exit; } header('X-Accel-Redirect: /upload/protected/' . $filePath); header('Content-Type: ' . $mimeType); עם השדה CREATE TABLE bl_medialib_file_rights ( file_id INT NOT NULL, group_id INT NOT NULL, permission CHAR(1) NOT NULL DEFAULT 'R', PRIMARY KEY (file_id, group_id) ); CREATE TABLE bl_file_access_log ( file_id INT NOT NULL, user_id INT NOT NULL, accessed_at DATETIME NOT NULL, ip VARCHAR(45) NOT NULL, result ENUM('allowed','denied') NOT NULL ); .

ביקורת גישה

כדי לעקוב אחר מי ניגש למשאבים מוגנים ומתי, נוצרת טבלת יומן (ראה לעיל). היומן נכתב במטפל הבקשות של PHP. זה מאפשר זיהוי פעילות חשודה וביצוע ביקורות.

השוואת גישות

גישה גמישות ביצועים מורכבות יישום
הרשאות רק על אוספים נמוכה גבוהה (ללא שאילתות נוספות) נמוכה
הרשאות ברמת קובץ גבוהה בינונית (שאילתת DB נוספת) בינונית
הגנה באמצעות כותרת X-Accel בינונית גבוהה (הגשה סטטית) בינונית

הפניה X-Accel מהירה פי 3 מהעברת PHP, ועם שמירה במטמון עם תגים, האימות מהיר פי 5–10 מאשר בדיקות ללא מטמון. לעומת זאת, mod_xsendfile ללא מטמון יכול להיות איטי עד פי 2.

מה כלול בעבודה
  • ביקורת על מבנה האוספים הנוכחי וההרשאות הקיימות
  • עיצוב תוכנית הפרדת גישה לפי קבוצות משתמשים
  • הגדרת הרשאות על אוספים ובמידת הצורך על קבצים בודדים
  • הגדרת שרת אינטרנט (Nginx/Apache) להגנה על קבצים פיזיים
  • פיתוח מטפל PHP עם בדיקות הרשאות והפניה X-Accel
  • יישום רישום גישה
  • פיתוח שכבת מטמון עם ביטול תגים
  • בדיקת ביצועים לפני ואחרי
  • בדיקת כל התרחישים (כולל מטמון)
  • תיעוד והדרכת צוות

תהליך ההתקנה

  1. ביקורת על מבנה האוספים הנוכחי וההרשאות הקיימות
  2. עיצוב תוכנית הפרדת גישה לפי קבוצות משתמשים
  3. יישום — הגדרת הרשאות, התאמות שרת אינטרנט, פיתוח מטפל
  4. בדיקות — אימות כל התרחישים, כולל מטמון
  5. פריסה עם ניטור יומן

ההתקנה אורכת 2 עד 4 ימי עבודה, תלוי במורכבות. העלות הממוצעת של הגדרה כזו היא בין $800 ל-$1,200. אנו מבטיחים שלאחר ההגדרה, הקבצים יהיו מוגנים והביצועים לא ייפגעו. מומחים מוסמכים עם למעלה מ-50 פרויקטים מבטיחים תוצאות יציבות.

לפי תיעוד 1C-Bitrix, הרשאות אוסף מאוחסנות בטבלת b_medialib_coll_right.

טעויות נפוצות

  • שכחת להגדיר מטמון לקבצים מוגנים — כל בקשה פוגעת במסד הנתונים. פתרון: שמירה במטמון עם תגים ומודעות להרשאות.
  • שימוש ב-mod_xsendfile על Apache ללא בדיקת הרשאות — הקובץ מוגש לכל אחד. פתרון: תמיד בדוק הרשאות ב-PHP לפני הגשה. תיקון טעויות אלה יכול לחסוך בין $200 ל-$500 בעלויות פריצה פוטנציאליות.

לייעוץ והערכת עלות, צרו קשר. הזמינו הגדרת הרשאות גישה סוהר והיפטרו מכאב הראש של אבטחת קבצי מדיה.