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

1. הגדרת משמעות “צפייה בלבד”
התחל במדיניות מדויקת. צוותים שונים עשויים להשתמש במונח “צפייה בלבד” כדי להתכוון ל‑:
- לא להציע את הקובץ המקורי להורדה.
- לא להציג פעולה של ייצוא.
- לא לאפשר הדפסה.
- לאפשר צפייה רק במהלך מושב מורשה.
- למנוע ממשתמשים להגיע ישירות למיקום האחסון.
- להוסיף רשומות ביקורת כאשר מסמך נפתח.
אלו בקרים נפרדים. החלט אילו נדרשים וודא שהמוצר, התוספים והרישיון של Doconut שבחרת תומכים בהתנהגות המציג שאתה צריך.
לעולם אל תבטיח שמסמך גלוי אינו ניתן ללכידה. צילומי מסך, מצלמות, כלי נגישות, יכולות דפדפן, וגישה מורשית לפיקסלים המוצגים הופכים מניעת העתקה מוחלטת ללא מציאות.
2. הגנה על הקובץ המקורי
המסמך המקורי צריך להישאר באחסון מוגן בצד השרת.
השתמש ב‑:
- מזהי מסמכים שנוצרים על‑ידי השרת
- הרשאות אחסון מוגבלות
- הצפנה במנוחה לפי הצורך
- מדיניות שמירה מתועדת
- הרשאות נפרדות להעלאה, צפייה, ייצוא וניהול
אל תשלח אישורי אחסון, נתיבי קבצים בלתי מוגבלים, או כתובות URL ציבוריות קבועות ללקוח.
3. אימות כל בקשת מסמך
ב‑ASP.NET Core, הגן על נתיב המציג באמצעות מנגנוני האימות והאימות הרגילים.
השרת צריך לוודא:
- שהמשתמש מאומת.
- שהמסמך קיים.
- שהמשתמש מורשה לצפות במסמך הספציפי הזה.
- שהפעולה המבוקשת מותרת עבור תפקיד המשתמש ומצב הזרימה הנוכחי.
המאפיין [Authorize] יכול להגן על נתיב, בעוד שמדיניות, טענות, או אימות מבוסס משאבים יכולים לקבל את ההחלטה הספציפית למסמך.
האימות צריך לכלול גם כל קצה שמחזיר נתוני מסמך, עמודים, ייצוא, אנוטציות, או פלט הדפסה. אבטחת רק את העמוד הראשוני משאירה נתיבים חלופיים חשופים.
4. הפרדת הרשאות צפייה והורדה
מודל את ההרשאות במפורש במקום להסיק אותן מכפתור מוסתר.
לדוגמה:
CanViewDocumentCanDownloadOriginalCanExportDocumentCanPrintDocumentCanManageDocument
שמות אלה מתארים מדיניות אפליקציה, לא API של Doconut. שכבת האימות שלך צריכה להעריך אותם בצד השרת לפני ביצוע הפעולה המתאימה.
מנהל מערכת עשוי לקבל הרשאת הורדה בעוד שמשתמש מאומת אחר יקבל רק הרשאת צפייה. שני המשתמשים יכולים לשתף את אותה דף אפליקציה ולקבל יכולות מורשות שונות.
5. קונפיגורציית המציג מתיעוד רשמי
השתמש רק בשם ההגדרות ובצעדים המתועדים לגרסה המדויקת של Doconut המותקנת באפליקציה שלך.
הדף הרשמי של Doconut Viewer page מספק מידע עדכני על המוצר. דף Doconut download and documentation page מספק משאבי התקנה ודוגמאות ספציפיות לגרסה.
אם המוצר המותקן מציג הגדרה נתמכת להסתרת או השבתת פעולה של הורדה:
- החל אותה בהתאם לתיעוד הרשמי.
- התייחס אליה כאל בקרה של ממשק משתמש וזרימת עבודה.
- שמור על קצה השרת הקשור מוגן.
- בדוק שמשתמשים לא מורשים אינם יכולים לעקוף זאת עם בקשה ישירה.
אל תעתיק תכונות קונפיגורציה משוערות ממאמר שאינו קשור ותניח שהן נתמכות.
6. שמירת אינטגרציית המציג מאחורי שירות
שירות אפליקציה ייעודי יכול:
- לאתר את המסמך המורשה
- לפתוח אותו דרך שכבת אחסון מאושרת
- להחיל קונפיגורציית מציג נתמכת
- לשחרר זרמים ומשאבים זמניים
- לרשום אירועי ביקורת מנוקים
- להחזיר שגיאות בטוחות לבקר
זה משאיר פרטים ספציפיים ל‑SDK מחוץ למדיניות האימות וקוד ההצגה.
סוגי .NET סטנדרטיים כגון Stream, FileStream, CancellationToken, ושירותים המוזרקים דרך תלות יכולים לעצב את גבול האפליקציה. עקוב אחרי תיעוד Doconut עבור קריאות ל‑SDK.
7. יישום הגנה בעומק (Defense in Depth)
זרימת עבודה של צפייה בלבד יכולה לכלול:
- אימות ואימות ברמת משאב
- בידוד רשת ואחסון
- משך מושב קצר
- נתיבי ייצוא והדפסה מוגבלים
- סימון מים כאשר נתמך ומתאים
- אירועי ביקורת לגישה למסמך
- מגבלות קצב ובקרות קונקורנציה
- כללי שמירה וניקוי ברורים
- ניטור אבטחה לדפוסי גישה חריגים
אין בקרה יחידה מספיקה. כפתור מוסתר ללא הגנה בצד השרת הוא במיוחד קל לעקיפה.
8. רישום גישה ללא דליפת נתונים
שדות ביקורת שימושיים כוללים:
- מזהה מסמך באפליקציה
- מזהה משתמש מורשה
- חותמת זמן
- פעולה מבוקשת
- תוצאה
- מזהה קורלציה
- סיבה מנוקה לדחייה או כשלון
הימנע מרישום:
- תוכן המסמך
- אישורי אחסון
- אסימוני גישה
- כתובות URL רגישות
- נתיבי שרת מלאים
- מידע אישי מיותר
הגן על יומני הביקורת בהתאם לרגישות ולדרישות השמירה שלהם.
9. בדיקת ניסיונות עקיפה של הממשק
אל תפסיק לאחר שאימותת שהכפתור בסרגל הכלים חסר.
בדוק האם משתמש עם צפייה בלבד יכול:
- לבקש ישירות את נתיב הקובץ המקורי
- לקרוא לנתיב ייצוא או הדפסה
- לשנות מזהה מסמך
- להשתמש במושב שפג תוקפו
- לגשת למסמך של משתמש אחר
- לגלות כתובות URL של אחסון במרקאפ או בתגובות רשת
- לעורר שגיאות מפורטות החושפות נתיבי פנימיים
- לשמור גישה לאחר שהרשאה בוטלה
כלול גם בדיקות אוטומטיות של אימות וגם בדיקות ידניות בדפדפן.
10. קביעת ציפיות מדויקות למשתמשים
הסבר מה המדיניות עושה:
- היא מגבילה זרימות הורדה או ייצוא שמסופקות על‑ידי האפליקציה.
- היא מגבילה גישה למשתמשים מורשים.
- היא עשויה לרשום אירועי צפייה.
- היא משאירה את הקובץ המקורי מאחורי בקרות שרת.
הסבר גם מה היא לא יכולה להבטיח:
- היא אינה יכולה למנוע צילום או צילומי מסך בכל סביבה.
- היא אינה יכולה לבטל מידע שכבר נצפה ונזכר.
- היא אינה מחליפה בקרות חוזה, ארגוניות או אבטחת קצה.
ההבחנה הזו מגבירה את האמינות של המוצר ועוזרת לבעלי עניין לבחור בבקרות מתאימות לחומר רגיש מאוד.
רשימת בדיקה (Verification Checklist)
- צפייה והורדה משתמשות בהרשאות שרת נפרדות.
- כל בקשת מסמך מבצעת אימות ברמת משאב.
- לקובץ המקורי אין כתובת URL ציבורית קבועה.
- הגדרות המציג נלקחות מהתיעוד לגרסת Doconut המותקנת.
- פעולות מוסתרות בעלות קצות שרת מוגנים.
- לנתונים זמניים יש תהליך ניקוי מוגדר.
- יומני ביקורת אינם כוללים תוכן מסמך וסודות.
- בקשות ישירות לא מורשות מכוסות בבדיקות.
- תגובות שגיאה אינן חושפות פרטי אחסון פנימיים.
- העתק של המוצר אינו טוען מניעת העתקה מוחלטת.
היכן Doconut משתלב
Doconut מספק את שכבת הצפייה המשובצת בתוך יישום .NET. האפליקציה שלך נשארת אחראית לזהות, לאמת, לנהל הרשאות, אחסון, שמירה, ביקורת, והאמת של ההבטחה “צפייה בלבד”.
הערך את Doconut .NET document viewer SDK בהתאם לדרישות האבטחה שלך ולמסמכים ייצוגיים. השתמש במשאבים רשמיים עבור קונפיגורציה נתמכת במקום להסתמך על קוד מקור משוער.
סיכום
זרימת עבודה של מסמך לצפייה בלבד היא תכנון הגנה בעומק, לא דגל בוליאני. הגן על הקובץ המקורי, אמת כל בקשה, הפרד הרשאות צפייה והורדה, אמת הגדרות מציג נתמכות, רישום ביקורת, ובדוק ניסיונות עקיפה ישירה של הממשק.
עם הבקרות הללו במקום, Doconut יכול לספק חוויית מסמך משובצת בעוד שהיישום ASP.NET שלך אוכף את מדיניות האבטחה סביבו.