حذف دکمه دانلود میتواند از یک جریان کاری فقط‑قابل‑مشاهده پشتیبانی کند، اما باعث نمیشود سند قابل مشاهده بههیچوجه قابل کپی شدن باشد. یک پیادهسازی ایمن به احراز هویت سمت سرور، ذخیرهسازی محافظتشده، نشستهای کوتاهمدت، ثبت دقیق لاگها و درک صادقانهای از آنچه محدودیتهای رابط کاربری میتوانند بهدست آورند، نیاز دارد.
Doconut یک نمایشگر سند تعبیهشده برای برنامههای تجاری بر پایه .NET فراهم میکند. این آموزش طراحی امنیتی پیرامون آن را بدون انتشار تنظیمات حدسی یا کد منبع نامستند Doconut توضیح میدهد.

1. تعریف معنای «فقط‑مشاهده»
با یک سیاست دقیق شروع کنید. تیمهای مختلف ممکن است «فقط‑مشاهده» را به معانی زیر بکار ببرند:
- ارائه فایل اصلی بهعنوان دانلود را ندهید.
- نمایش عمل خروجی (export) را حذف کنید.
- اجازه چاپ ندهید.
- فقط در طول یک نشست معتبر اجازه مشاهده بدهید.
- کاربران را از دسترسی مستقیم به مکان ذخیرهسازی منع کنید.
- هنگام باز شدن سند، رکوردهای حسابرسی اضافه کنید.
اینها کنترلهای جداگانهای هستند. تصمیم بگیرید کدامیک مورد نیاز است و اطمینان حاصل کنید محصول Doconut، افزونهها و لایسنس انتخابی شما رفتار نمایشگری که میخواهید را پشتیبانی میکند.
هرگز وعده ندهید که یک سند قابل مشاهده نمیتواند کپی شود. اسکرینشات، دوربینها، ابزارهای دسترسی، قابلیتهای مرورگر و دسترسی مجاز به پیکسلهای نمایش دادهشده، جلوگیری کامل را غیرواقعی میکند.
2. محافظت از فایل اصلی
سند اصلی باید در ذخیرهسازی محافظتشده سمت سرور باقی بماند.
از موارد زیر استفاده کنید:
- شناسههای سند تولید‑شده توسط سرور
- مجوزهای محدود برای ذخیرهسازی
- رمزنگاری در حالت استراحت در صورت نیاز
- سیاست نگهداری مستند شده
- مجوزهای جداگانه برای بارگذاری، مشاهده، خروجی و مدیریت
اعتبارهای ذخیرهسازی، مسیرهای فایل بدون محدودیت یا URLهای عمومی دائمی را بهکلاینت ارسال نکنید.
3. احراز هویت هر درخواست سند
در ASP.NET Core، مسیر نمایشگر را با مکانیزمهای استاندارد احراز هویت و مجوز محافظت کنید.
سرور باید بررسی کند:
- کاربر احراز هویت شده است.
- سند وجود دارد.
- کاربر اجازه مشاهدهٔ آن سند خاص را دارد.
- عمل درخواستشده برای نقش کاربر و وضعیت جاری جریان کاری مجاز است.
ویژگی [Authorize] میتواند یک مسیر را محافظت کند، در حالی که سیاستها، ادعاها یا مجوز مبتنی بر منبع میتوانند تصمیمگیری مخصوص به سند را انجام دهند.
مجوز باید شامل هر نقطهٔ انتهایی که دادههای سند، صفحات، خروجیها، حاشیهنویسی یا خروجی چاپ را برمیگرداند نیز باشد. فقط ایمنسازی صفحهٔ اولیه، مسیرهای جایگزین را در معرض خطر میگذارد.
4. جداسازی مجوزهای مشاهده و دانلود
مجوزها را بهصورت صریح مدلسازی کنید نه اینکه از یک دکمه مخفی استنتاج کنید.
به عنوان مثال:
CanViewDocumentCanDownloadOriginalCanExportDocumentCanPrintDocumentCanManageDocument
این نامها سیاستهای برنامه را توصیف میکنند، نه APIهای Doconut. لایهٔ مجوز شما باید قبل از اجرای عمل مربوطه، این موارد را در سمت سرور ارزیابی کند.
یک مدیر ممکن است مجوز دانلود داشته باشد در حالی که کاربر احراز هویتشدهٔ دیگر فقط مجوز مشاهده داشته باشد. هر دو کاربر میتوانند همان صفحهٔ برنامه را ببینند ولی قابلیتهای مجاز متفاوتی دریافت میکنند.
5. پیکربندی نمایشگر بر اساس مستندات رسمی
فقط از نامهای پیکربندی و مراحل یکپارچهسازی مستند برای نسخهٔ دقیق Doconut که در برنامهٔ شما نصب شده است، استفاده کنید.
صفحهٔ رسمی Doconut Viewer اطلاعات محصول فعلی را ارائه میدهد. صفحهٔ دانلود و مستندات Doconut منابع نصب و مثالهای نسخه‑محور را فراهم میکند.
اگر محصول نصبشده تنظیمی پشتیبانیشده برای مخفی یا غیرفعالسازی عمل دانلود داشته باشد:
- آن را مطابق مستندات رسمی اعمال کنید.
- بهعنوان یک کنترل رابط کاربری و جریان کاری در نظر بگیرید.
- نقطهٔ انتهایی سرور مرتبط را محافظت کنید.
- تست کنید که کاربران غیرمجاز نتوانند با یک درخواست مستقیم آن را دور بزنند.
از کپی کردن تنظیمات حدسی از مقالهای نامرتبط و فرض اینکه پشتیبانی میشوند، خودداری کنید.
6. نگهداشتن یکپارچهسازی نمایشگر پشت یک سرویس
یک سرویس برنامهٔ اختصاصی میتواند:
- سند مجاز را بازیابی کند
- آن را از طریق یک انتزاع ذخیرهسازی تأییدشده باز کند
- پیکربندی نمایشگر پشتیبانیشده را اعمال کند
- جریانها و منابع موقت را آزاد کند
- رویدادهای حسابرسی تمیزشده را ثبت کند
- خطاهای ایمن را به کنترلکننده برگرداند
این کار جزئیات خاص SDK را از سیاستهای مجوز و کد ارائه جدا میکند.
نوعهای استاندارد .NET مانند Stream، FileStream، CancellationToken و سرویسهای تزریق‑پذیر میتوانند مرز برنامهٔ اطراف را تشکیل دهند. برای فراخوانیهای SDK، مستندات Doconut را دنبال کنید.
7. اعمال دفاع در عمق
یک جریان کاری فقط‑مشاهده میتواند شامل موارد زیر باشد:
- احراز هویت و مجوز در سطح منبع
- جداسازی شبکه و ذخیرهسازی
- مدت زمان کوتاه نشست
- مسیرهای خروجی و چاپ محدود شده
- واترمارکگذاری در صورت پشتیبانی و مناسب بودن
- رویدادهای حسابرسی برای دسترسی به سند
- محدودیتهای نرخ و کنترل همزمانی
- قوانین واضح نگهداری و پاکسازی
- نظارت امنیتی برای الگوهای دسترسی غیرعادی
هیچ کنترل واحدی کافی نیست. یک دکمهٔ مخفی بدون محافظت سروری بهراحتی قابل دور زدن است.
8. ثبت دسترسی بدون نشت دادهها
فیلدهای حسابرسی مفید شامل:
- شناسهٔ سند برنامه
- شناسهٔ کاربر مجاز
- زمانمهر
- عمل درخواستشده
- نتیجه
- شناسهٔ همبستگی
- دلیل تمیزشدهٔ رد یا شکست
از ثبت لاگهای زیر خودداری کنید:
- محتوای سند
- اعتبارهای ذخیرهسازی
- توکنهای دسترسی
- URLهای حساس
- مسیرهای کامل سرور
- اطلاعات شخصی غیرضروری
لاگهای حسابرسی را بر اساس حساسیت و نیازهای نگهداری محافظت کنید.
9. آزمون تلاش برای دور زدن رابط کاربری
پس از تأیید عدم وجود دکمهٔ نوار ابزار، متوقف نشوید.
آزمون کنید که آیا کاربر فقط‑مشاهده میتواند:
- مسیر فایل اصلی را مستقیماً درخواست کند
- مسیر خروجی یا چاپ را فراخوانی کند
- شناسهٔ سند را تغییر دهد
- از نشست منقضیشده استفاده مجدد کند
- به سند کاربر دیگری دسترسی پیدا کند
- URLهای ذخیرهسازی را در مارکاپ یا پاسخهای شبکه کشف کند
- خطاهای مفصل که مسیرهای داخلی را فاش میکنند، فعال کند
- پس از لغو مجوز، دسترسی را حفظ کند
هم تستهای خودکار مجوز و هم تستهای دستی مرورگر را شامل شوید.
10. تنظیم انتظارات دقیق کاربر
سیاست را بهصورت زیر توضیح دهید:
- دانلود یا خروجیهای ارائهشده توسط برنامه محدود میشود.
- دسترسی فقط به کاربران مجاز محدود میشود.
- ممکن است رویدادهای مشاهده ثبت شوند.
- فایل اصلی پشت کنترلهای سرور باقی میماند.
همچنین توضیح دهید که چه چیزهایی را نمیتواند تضمین کند:
- نمیتواند عکاسی یا اسکرینشات را در هر محیطی جلوگیری کند.
- نمیتواند اطلاعاتی که قبلاً دیده و بهخاطر سپرده شدهاند را پس بگیرد.
- جایگزین کنترلهای قراردادی، سازمانی یا امنیت نقطهٔ انتهایی نیست.
این تمایز محصول را قابل اعتمادتر میکند و به ذینفعان کمک میکند تا کنترلهای مناسب برای مطالب بسیار حساس را انتخاب کنند.
فهرست بررسی تأییدیه
- مشاهده و دانلود از مجوزهای سروری جداگانه استفاده میکنند.
- هر درخواست سند، مجوز در سطح منبع را اجرا میکند.
- فایل اصلی URL عمومی دائمی ندارد.
- تنظیمات نمایشگر از مستندات نسخهٔ نصبشدهٔ Doconut میآید.
- اعمال مخفی دارای نقطهٔ انتهایی سرور محافظتشده هستند.
- دادههای موقت دارای فرآیند پاکسازی تعریفشدهاند.
- لاگهای حسابرسی محتوای سند و اسرار را شامل نمیشوند.
- درخواستهای مستقیم غیرمجاز توسط تستها پوشش داده میشوند.
- پاسخهای خطا جزئیات داخلی ذخیرهسازی را فاش نمیکنند.
- کپی محصول ادعای جلوگیری کامل از کپی را نمیکند.
جایگاه Doconut
Doconut لایهٔ نمایش تعبیهشده را در برنامهٔ .NET شما فراهم میکند. برنامهٔ شما مسئول هویت، مجوز، مجوزها، ذخیرهسازی، نگهداری، حسابرسی و صداقت وعدهٔ «فقط‑مشاهده» است.
SDK Doconut .NET document viewer را با الزامات امنیتی و اسناد نمایشی خود ارزیابی کنید. برای پیکربندیهای پشتیبانیشده از منابع رسمی استفاده کنید نه از کدهای حدسی.
نتیجهگیری
یک جریان کاری سند فقط‑مشاهده، طراحی دفاع در عمق است نه یک پرچم بولی. فایل اصلی را محافظت کنید، هر درخواست را احراز هویت کنید، مجوزهای مشاهده و دانلود را جدا کنید، تنظیمات نمایشگر پشتیبانیشده را اعتبارسنجی کنید، دسترسیها را حسابرسی کنید و تلاشهای مستقیم برای دور زدن رابط کاربری را تست کنید.
با داشتن این کنترلها، Doconut میتواند تجربهٔ سند تعبیهشده را فراهم کند در حالی که برنامهٔ ASP.NET شما سیاست امنیتی اطراف آن را اجرا میکند.