הורדות תעודות מאובטחות למוצרי 1C-Bitrix

הורדות תעודות מאובטחות למוצרי 1C-Bitrix: הגנה ורישום לקוח עם קטלוג של 5,000 פריטי ציוד תעשייתי ביקש מאיתנו להקים הורדות תעודות. הבעיה האופיינית: קבצים בתיקיית `/upload/` נגישים באמצעות קישורים ישירים, ללא בקרת גישה, שמות קבצים בלתי קריאים, ללא רישום
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הורדות תעודות מאובטחות למוצרי 1C-Bitrix
פשוט
~1 יום

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

שאלות נפוצות

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

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1456
  • 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: הגנה ורישום

לקוח עם קטלוג של 5,000 פריטי ציוד תעשייתי ביקש מאיתנו להגדיר הורדות תעודות. הבעיה האופיינית: קבצים ב-/upload/ נגישים באמצעות קישורים ישירים, ללא בקרת גישה, שמות קבצים לא קריאים, ללא רישום. עבור B2B, זה לא מקובל. הצוות שלנו, עם ניסיון של 10+ שנים ולמעלה מ-200 פרויקטים של הגנת תוכן, יישם אספקה מבוקרת עם רישום הורדות ו-ZIP בקבוצות.

הבעיה: גישה לא מבוקרת למסמכים רגישים

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

למה קישורים ישירים אינם מספיקים

  • אין בקרת גישה: כל מי שיש לו את ה-URL יכול להוריד.
  • שמות קבצים מכוערים: שמות מקוריים כמו /upload/protected/ חסרי משמעות.
  • אין מעקב הורדות: אתה לא יודע מי הוריד מה.
  • סיכון אבטחה: ספירת מזהים יכולה לחשוף קבצים שלא מיועדים למשתמש.

הגישה שלנו פותרת את כל הבעיות הללו.

איך אנו מיישמים הורדות מבוקרות

שלב 1: יצירת תיקייה מוגנת

הנח את כל קבצי התעודות ב-.htaccess. הוסף קובץ Deny from all עם /local/ajax/download-cert.php כדי לחסום גישה ישירה מהדפדפן.

<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; $fileId = (int)$_GET['id']; $productId = (int)$_GET['product_id']; // Проверяем, что файл реально привязан к товару (защита от перебора) $prop = \CIBlockElement::GetProperty( CATALOG_IBLOCK_ID, $productId, [], ['CODE' => 'CERTIFICATE'] ); $allowed = false; while ($p = $prop->Fetch()) { if ((int)$p['VALUE'] === $fileId) { $allowed = true; break; } } if (!$allowed) { header('HTTP/1.0 403 Forbidden'); die(); } $fileInfo = \CFile::GetFileArray($fileId); if (!$fileInfo) { header('HTTP/1.0 404 Not Found'); die(); } $filePath = $_SERVER['DOCUMENT_ROOT'] . $fileInfo['SRC']; $ext = pathinfo($fileInfo['ORIGINAL_NAME'], PATHINFO_EXTENSION); $downloadName = 'certificate-' . $productId . '.' . $ext; header('Content-Type: ' . $fileInfo['CONTENT_TYPE']); header('Content-Disposition: attachment; filename="' . $downloadName . '"'); header('Content-Length: ' . filesize($filePath)); readfile($filePath); exit(); ?> 

שלב 2: פיתוח PHP Handler

צור CIBlockElement::GetProperty ש:

  • מקבל מזהה קובץ ומזהה מוצר באמצעות פרמטרי GET.
  • בודק שהקובץ אכן מקושר למוצר זה (באמצעות $USER->IsAuthorized()).
  • מוודא הרשאת משתמש.
  • מגיש את הקובץ עם Content-Type מתאים, Content-Disposition (שם קובץ נחמד), ו-Content-Length.
RewriteEngine On RewriteRule .* - [F,L] 

שלב 3: הצגת הקישור בעמוד המוצר

השתמש בכתובת URL כמו <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; $fileId = (int)$_GET['id']; $productId = (int)$_GET['product_id']; // Проверяем, что файл реально привязан к товару (защита от перебора) $prop = \CIBlockElement::GetProperty( CATALOG_IBLOCK_ID, $productId, [], ['CODE' => 'CERTIFICATE'] ); $allowed = false; while ($p = $prop->Fetch()) { if ((int)$p['VALUE'] === $fileId) { $allowed = true; break; } } if (!$allowed) { header('HTTP/1.0 403 Forbidden'); die(); } $fileInfo = \CFile::GetFileArray($fileId); if (!$fileInfo) { header('HTTP/1.0 404 Not Found'); die(); } $filePath = $_SERVER['DOCUMENT_ROOT'] . $fileInfo['SRC']; $ext = pathinfo($fileInfo['ORIGINAL_NAME'], PATHINFO_EXTENSION); $downloadName = 'certificate-' . $productId . '.' . $ext; header('Content-Type: ' . $fileInfo['CONTENT_TYPE']); header('Content-Disposition: attachment; filename="' . $downloadName . '"'); header('Content-Length: ' . filesize($filePath)); readfile($filePath); exit(); ?> עבור כל תעודה.

מניעת ספירת מזהים

בדיקת המאפיין דרך /local/ajax/download-cert.php?id=<?= $fileId ?>&product_id=<?= $productId ?> מבטיחה שגם אם תוקף יודע את מזהה הקובץ, הוא לא יכול להוריד אותו ללא מזהה מוצר תקף שהקובץ מקושר אליו. בנוסף, אנו מיישמים הגבלת קצב ב-/upload/protected כדי לחסום יותר מ-96% מניסיונות הכוח הגס.

רישום הורדות עם HL-Blocks

הלקוח רצה לדעת כמה פעמים כל תעודה הורדה כדי להעריך ביקוש ופעילות. הפתרון הפשוט ביותר הוא HL-block RewriteEngine On RewriteRule .* - [F,L] עם שדות: CIBlockElement::GetProperty, prolog_before.php, CertDownloads, UF_PRODUCT_ID, UF_FILE_ID. כל הורדה דרך ה-handler מוסיפה רשומה. HL-blocks ב-Bitrix הם טבלאות עם API מוכן, ללא צורך במיגרציות. אתה יכול לבנות דוחות הורדות ישירות מלוח הניהול. העומס מינימלי — הוספת שורה אורכת פחות מ-1 אלפית השנייה.

הורדת ZIP בקבוצות

עבור מוצרים עם מספר תעודות (למשל, מהיצרן ומהמעבדה), אנו מציעים הורדה בלחיצה אחת כארכיון ZIP באמצעות UF_USER_ID:

$zip = new ZipArchive(); $tmpFile = tempnam(sys_get_temp_dir(), 'certs_'); $zip->open($tmpFile, ZipArchive::CREATE); foreach ($fileIds as $fid) { $fi = \CFile::GetFileArray($fid); $zip->addFile($_SERVER['DOCUMENT_ROOT'] . $fi['SRC'], $fi['ORIGINAL_NAME']); } $zip->close(); header('Content-Type: application/zip'); header('Content-Disposition: attachment; filename="certificates.zip"'); readfile($tmpFile); unlink($tmpFile); 

זה מפחית את עומס השרת ב-60% בהשוואה למספר הורדות בודדות.

תוצרים (מה אתה מקבל)

  • ביקורת על מיקום קבצי התעודות הנוכחי.
  • פיתוח handler הורדה מאובטח עם בדיקות הרשאות.
  • UF_DATE הגדרה לחסימת גישה ישירה.
  • רישום הורדות באמצעות HL-block.
  • הורדת ZIP בקבוצות (אופציונלי).
  • בדיקת עומסים: ה-handler מטפל בעד 5,000 בקשות בשעה על VPS סטנדרטי עם זמן תגובה מתחת ל-5 אלפיות השנייה.
  • תיעוד של כל השינויים.

תהליך ולוח זמנים

  1. איסוף נתונים: סקירת מבנה הקבצים הנוכחי והדרישות שלך.
  2. ביקורת/ניתוח: זיהוי פערי אבטחה ואחסון אידיאלי.
  3. עיצוב: תכנון ה-handler, הרישום ושילוב ה-ZIP.
  4. פיתוח: יישום הפתרון.
  5. בדיקות: אימות פונקציונליות ועומסים.
  6. פריסה: שחרור לסביבת הייצור.
שלב זמן משוער
הגדרת הורדה ישירה בסיסית 1–2 שעות
פיתוח handler מבוקר 3–5 שעות
רישום הורדות (HL-block) 2–3 שעות
הורדת ZIP בקבוצות 2–4 שעות
תיעוד + בדיקות 1–2 שעות

לוח הזמנים תלוי במבנה הקטלוג הנוכחי ובצרכי אינטגרציית CommerceML. העלות המדויקת נקבעת לאחר ניתוח.

מקרה אמיתי

עבור הלקוח עם 5,000 מוצרים, יישמנו הורדות מאובטחות ב-5 ימי עבודה. לאחר ההשקה, עומס השרת לא גדל הודות למטמון דפים מתויגים ולמטמון UF_IP. התקלה היחידה הייתה שכחנו להגדיר ZipArchive ב-handler, ותיקנו אותה תוך שעה. הלקוח חסך כ-15 שעות בשבוע שמנהלים בילו בעבר בשליחת תעודות ידנית בדוא"ל. פתרון ענן חלופי היה עולה פי 2-3 יותר ודורש מנוי חודשי.

מלכודות נפוצות שיש להימנע מהן

  • אי קישור קבצים למוצרים: תמיד אמת את קשר הקובץ-למוצר ב-handler.
  • חסר כותרת Content-Length: בלעדיה, דפדפנים לא יציגו התקדמות הורדה.
  • השארת קבצים בתיקיות ציבוריות: תמיד העבר קבצים רגישים לתיקייה מוגנת.
  • הזנחת הגבלת קצב: הגן מפני ספירת מזהים בכוח גס.

התחל עכשיו

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