ออกแบบกระบวนการทำงานเอกสารแบบดูอย่างเดียวด้วย Doconut
7/31/2026

ออกแบบกระบวนการทำงานเอกสารแบบดูอย่างเดียวด้วย Doconut

เรียนรู้วิธีออกแบบกระบวนการทำงานเอกสารแบบดูอย่างเดียวใน ASP.NET ด้วยการอนุญาตฝั่งเซิร์ฟเวอร์ การจัดเก็บที่ควบคุม การตรวจสอบ และการตั้งค่าผู้ชม Doconut ที่มีเอกสารอธิบาย

การลบปุ่มดาวน์โหลดสามารถสนับสนุนกระบวนการทำงานแบบดูอย่างเดียวได้ แต่ไม่ได้ทำให้เอกสารที่มองเห็นได้เป็นไปไม่ได้ที่จะคัดลอก การดำเนินการที่ปลอดภัยต้องอาศัยการอนุญาตฝั่งเซิร์ฟเวอร์ การจัดเก็บที่ได้รับการปกป้อง เซสชันสั้น ๆ การบันทึกที่ระมัดระวัง และความเข้าใจที่ตรงไปตรงมาว่าสิ่งที่การจำกัดส่วนติดต่อผู้ใช้ทำได้มีขอบเขตแค่ไหน

Doconut ให้บริการตัวดูเอกสาร .NET ที่ฝังอยู่ในแอปพลิเคชันธุรกิจ บทความนี้อธิบายการออกแบบด้านความปลอดภัยโดยไม่เปิดเผยคุณสมบัติคอนฟิกที่คาดเดา หรือโค้ดแหล่งที่มาของ Doconut ที่ไม่ได้รับการบันทึกไว้

การควบคุมแบบ Defense-in-depth ที่ปกป้องตัวดูเอกสารแบบฝังและจำกัดการกระทำการส่งออก
การควบคุมแบบ Defense-in-depth ที่ปกป้องตัวดูเอกสารแบบฝังและจำกัดการกระทำการส่งออก

1. กำหนดความหมายของ “View-Only”

เริ่มต้นด้วยนโยบายที่ชัดเจน ทีมต่าง ๆ อาจใช้คำว่า “view-only” เพื่อหมายถึง:

  • ไม่ให้ไฟล์ต้นฉบับเป็นการดาวน์โหลด
  • ไม่แสดงการส่งออก
  • ไม่อนุญาตพิมพ์
  • อนุญาตให้ดูเฉพาะระหว่างเซสชันที่ได้รับอนุญาต
  • ป้องกันไม่ให้ผู้ใช้เข้าถึงตำแหน่งจัดเก็บโดยตรง
  • เพิ่มบันทึกการตรวจสอบเมื่อเปิดเอกสาร

เหล่านี้เป็นการควบคุมที่แยกจากกัน ให้ตัดสินใจว่าต้องการใช้ข้อใดบ้างและตรวจสอบให้แน่ใจว่าผลิตภัณฑ์ Doconut, ปลั๊กอินและไลเซนส์ที่เลือกสนับสนุนพฤติกรรมของตัวดูที่คุณต้องการ

อย่าให้สัญญาว่าเอกสารที่มองเห็นได้จะไม่ถูกจับภาพได้เลย การถ่ายภาพหน้าจอ, กล้อง, เครื่องมือการเข้าถึง, ความสามารถของเบราว์เซอร์ และการเข้าถึงพิกเซลที่แสดงอยู่โดยผู้ใช้ที่ได้รับอนุญาต ทำให้การป้องกันแบบสมบูรณ์เป็นเรื่องที่เป็นไปไม่ได้ในทางปฏิบัติ


2. ปกป้องไฟล์ต้นฉบับ

ไฟล์ต้นฉบับควรอยู่ในที่จัดเก็บที่ได้รับการปกป้องบนเซิร์ฟเวอร์

ใช้:

  • ตัวระบุเอกสารที่สร้างโดยเซิร์ฟเวอร์
  • สิทธิ์การจัดเก็บที่จำกัด
  • การเข้ารหัสขณะพักตามที่ต้องการ
  • นโยบายการเก็บรักษาที่มีเอกสารอธิบาย
  • สิทธิ์แยกต่างหากสำหรับอัปโหลด, ดู, ส่งออก, และการดูแลระบบ

ห้ามส่งข้อมูลรับรองการจัดเก็บ, เส้นทางไฟล์ที่ไม่จำกัด, หรือ URL สาธารณะถาวรให้กับไคลเอนต์


3. อนุญาตทุกคำขอเอกสาร

ใน ASP.NET Core ให้ปกป้องเส้นทางตัวดูด้วยกลไกการยืนยันตัวตนและการอนุญาตมาตรฐาน

เซิร์ฟเวอร์ควรตรวจสอบ:

  1. ผู้ใช้ได้รับการยืนยันตัวตน
  2. เอกสารมีอยู่จริง
  3. ผู้ใช้ได้รับอนุญาตให้ดูเอกสารนั้น
  4. การกระทำที่ร้องขอได้รับอนุญาตตามบทบาทของผู้ใช้และสถานะกระบวนการทำงานปัจจุบัน

แอตทริบิวต์ [Authorize] สามารถปกป้องเส้นทางได้ ส่วนนโยบาย, คลม, หรือการอนุญาตแบบทรัพยากรสามารถทำการตัดสินใจเฉพาะเอกสารได้

การอนุญาตต้องครอบคลุมทุก endpoint ที่ส่งคืนข้อมูลเอกสาร, หน้า, การส่งออก, คำอธิบาย, หรือผลลัพธ์การพิมพ์ การปกป้องเพียงหน้าแรกเท่านั้นจะทำให้เส้นทางอื่น ๆ ยังคงเปิดให้เข้าถึงได้


4. แยกสิทธิ์การดูและการดาวน์โหลด

กำหนดสิทธิ์อย่างชัดเจนแทนการสรุปจากการซ่อนปุ่ม

ตัวอย่าง:

  • CanViewDocument
  • CanDownloadOriginal
  • CanExportDocument
  • CanPrintDocument
  • CanManageDocument

ชื่อเหล่านี้อธิบายนโยบายของแอปพลิเคชัน ไม่ใช่ API ของ Doconut ชั้นการอนุญาตของคุณควรประเมินสิทธิ์เหล่านี้บนเซิร์ฟเวอร์ก่อนดำเนินการที่สอดคล้องกัน

ผู้ดูแลระบบอาจมีสิทธิ์ดาวน์โหลดได้ ในขณะที่ผู้ใช้ที่ยืนยันตัวตนอื่น ๆ มีเพียงสิทธิ์ดู ทั้งสองสามารถใช้หน้าแอปเดียวกันได้ แต่ได้รับความสามารถที่ได้รับการอนุญาตต่างกัน


5. กำหนดค่าตัวดูจากเอกสารอย่างเป็นทางการ

ใช้ชื่อคอนฟิกและขั้นตอนการรวมที่มีเอกสารอธิบายสำหรับเวอร์ชัน Doconut ที่ติดตั้งในแอปของคุณเท่านั้น

หน้า Doconut Viewer ที่ได้รับการตรวจสอบให้ข้อมูลผลิตภัณฑ์ล่าสุด ส่วนหน้า Doconut download and documentation ให้แหล่งข้อมูลการติดตั้งและตัวอย่างตามเวอร์ชัน

หากผลิตภัณฑ์ที่ติดตั้งเปิดให้มีการตั้งค่าที่สนับสนุนการซ่อนหรือปิดการทำงานของปุ่มดาวน์โหลด:

  1. ใช้ตามเอกสารอย่างเป็นทางการ
  2. ถือว่าเป็นการควบคุมส่วนติดต่อผู้ใช้และกระบวนการทำงาน
  3. รักษา endpoint ของเซิร์ฟเวอร์ที่เกี่ยวข้องให้ปลอดภัย
  4. ทดสอบว่าผู้ใช้ที่ไม่ได้รับอนุญาตไม่สามารถข้ามผ่านด้วยการร้องขอโดยตรงได้

ห้ามคัดลอกคุณสมบัติคอนฟิกที่คาดเดาจากบทความที่ไม่เกี่ยวข้องและสันนิษฐานว่ามีการสนับสนุน


6. เก็บการรวมตัวดูไว้หลังบริการ

บริการแอปพลิเคชันเฉพาะสามารถทำได้:

  • ค้นหาเอกสารที่ได้รับอนุญาต
  • เปิดผ่านการนามธรรมการจัดเก็บที่ได้รับการอนุมัติ
  • ใช้การกำหนดค่าตัวดูที่สนับสนุน
  • ปล่อย Stream และทรัพยากรชั่วคราว
  • บันทึกเหตุการณ์ตรวจสอบที่ทำความสะอาดแล้ว
  • ส่งคืนข้อผิดพลาดที่ปลอดภัยให้กับคอนโทรลเลอร์

วิธีนี้ทำให้รายละเอียดเฉพาะ SDK ไม่หลุดออกมานอกนโยบายการอนุญาตและโค้ดการนำเสนอ

ชนิดมาตรฐานของ .NET เช่น Stream, FileStream, CancellationToken และบริการที่ฉีดพึ่งพา (dependency‑injected) สามารถสร้างขอบเขตแอปพลิเคชันได้ ปฏิบัติตามเอกสารของ Doconut สำหรับการเรียกใช้ SDK


7. ใช้แนวคิด Defense in Depth

กระบวนการทำงานแบบดูอย่างเดียวอาจรวมถึง:

  • การยืนยันตัวตนและการอนุญาตระดับทรัพยากร
  • การแยกเครือข่ายและการจัดเก็บ
  • ระยะเวลาเซสชันสั้น
  • เส้นทางการส่งออกและพิมพ์ที่จำกัด
  • การใส่ลายน้ำเมื่อสนับสนุนและเหมาะสม
  • เหตุการณ์ตรวจสอบการเข้าถึงเอกสาร
  • การจำกัดอัตราและการควบคุมความพร้อมพร้อมกัน
  • กฎการเก็บรักษาและทำความสะอาดที่ชัดเจน
  • การเฝ้าระวังความปลอดภัยสำหรับรูปแบบการเข้าถึงที่ผิดปกติ

ไม่มีการควบคุมเดียวที่เพียงพอ ปุ่มที่ซ่อนอยู่โดยไม่มีการปกป้องจากเซิร์ฟเวอร์เป็นช่องโหว่ที่ง่ายต่อการข้ามผ่าน


8. บันทึกการเข้าถึงโดยไม่รั่วข้อมูล

ฟิลด์ตรวจสอบที่เป็นประโยชน์รวมถึง:

  • ตัวระบุเอกสารของแอปพลิเคชัน
  • ตัวระบุผู้ใช้ที่ได้รับอนุญาต
  • เวลา
  • การกระทำที่ร้องขอ
  • ผลลัพธ์
  • ตัวระบุการเชื่อมโยง
  • เหตุผลที่ทำความสะอาดสำหรับการปฏิเสธหรือความล้มเหลว

หลีกเลี่ยงการบันทึก:

  • เนื้อหาเอกสาร
  • ข้อมูลรับรองการจัดเก็บ
  • โทเค็นการเข้าถึง
  • URL ที่เป็นความลับ
  • เส้นทางเซิร์ฟเวอร์เต็ม
  • ข้อมูลส่วนบุคคลที่ไม่จำเป็น

ปกป้องบันทึกการตรวจสอบตามระดับความอ่อนไหวและข้อกำหนดการเก็บรักษา


9. ทดสอบการพยายามข้าม UI

ห้ามหยุดเพียงแค่ยืนยันว่าปุ่มบนแถบเครื่องมือไม่มีอยู่

ทดสอบว่าผู้ใช้แบบดูอย่างเดียวสามารถ:

  • ขอเส้นทางไฟล์ต้นฉบับโดยตรง
  • เรียกเส้นทางส่งออกหรือพิมพ์
  • เปลี่ยนตัวระบุเอกสาร
  • ใช้เซสชันที่หมดอายุซ้ำ
  • เข้าถึงเอกสารของผู้ใช้คนอื่น
  • ค้นพบ URL การจัดเก็บใน markup หรือการตอบสนองเครือข่าย
  • ทำให้เกิดข้อผิดพลาดที่ละเอียดซึ่งเปิดเผยเส้นทางภายใน
  • รักษาการเข้าถึงหลังจากที่สิทธิ์ของพวกเขาถูกเพิกถอน

รวมการทดสอบการอนุญาตอัตโนมัติและการทดสอบด้วยเบราว์เซอร์แบบแมนนวล


10. ตั้งความคาดหวังของผู้ใช้ให้แม่นยำ

อธิบายสิ่งที่นโยบายทำ:

  • จำกัดกระบวนการดาวน์โหลดหรือส่งออกที่แอปพลิเคชันจัดหา
  • จำกัดการเข้าถึงให้กับผู้ใช้ที่ได้รับอนุญาต
  • อาจบันทึกเหตุการณ์การดู
  • เก็บไฟล์ต้นฉบับไว้หลังการควบคุมของเซิร์ฟเวอร์

อธิบายสิ่งที่นโยบายไม่สามารถรับประกันได้:

  • ไม่สามารถป้องกันการถ่ายภาพหรือสกรีนช็อตในทุกสภาพแวดล้อม
  • ไม่สามารถยกเลิกข้อมูลที่ผู้ใช้เห็นและจำไว้แล้ว
  • ไม่ได้แทนที่การควบคุมความปลอดภัยตามสัญญา, องค์กร หรืออุปกรณ์ปลายทาง

ความแตกต่างนี้ทำให้ผลิตภัณฑ์น่าเชื่อถือมากขึ้นและช่วยให้ผู้มีส่วนได้ส่วนเสียเลือกการควบคุมที่เหมาะสมสำหรับข้อมูลที่มีความอ่อนไหวสูง


Verification Checklist

  • การดูและการดาวน์โหลดใช้สิทธิ์เซิร์ฟเวอร์แยกกัน
  • ทุกคำขอเอกสารทำการอนุญาตระดับทรัพยากร
  • ไฟล์ต้นฉบับไม่มี URL สาธารณะถาวร
  • การตั้งค่าตัวดูมาจากเอกสารสำหรับเวอร์ชัน Doconut ที่ติดตั้ง
  • การกระทำที่ซ่อนอยู่มี endpoint ของเซิร์ฟเวอร์ที่ได้รับการปกป้อง
  • ข้อมูลชั่วคราวมีขั้นตอนทำความสะอาดที่กำหนดไว้
  • บันทึกการตรวจสอบหลีกเลี่ยงเนื้อหาและความลับของเอกสาร
  • การร้องขอโดยตรงที่ไม่ได้รับอนุญาตได้รับการทดสอบ
  • การตอบสนองข้อผิดพลาดไม่เปิดเผยรายละเอียดการจัดเก็บภายใน
  • คำโฆษณาผลิตภัณฑ์ไม่อ้างว่าป้องกันการคัดลอกอย่างสมบูรณ์

Where Doconut Fits

Doconut ให้ชั้นการดูแบบฝังอยู่ในแอปพลิเคชัน .NET ของคุณ ส่วนแอปพลิเคชันของคุณยังคงรับผิดชอบต่อการระบุตัวตน, การอนุญาต, สิทธิ์, การจัดเก็บ, การเก็บรักษา, การตรวจสอบ, และความจริงของสัญญา “ดูอย่างเดียว”

ประเมิน Doconut .NET document viewer SDK ตามข้อกำหนดด้านความปลอดภัยและเอกสารตัวอย่างที่เป็นตัวแทน ใช้ แหล่งข้อมูลอย่างเป็นทางการ สำหรับการตั้งค่าที่สนับสนุน แทนการพึ่งพาโค้ดที่คาดเดา


Conclusion

กระบวนการทำงานเอกสารแบบดูอย่างเดียวเป็นการออกแบบแบบ Defense‑in‑Depth ไม่ใช่แค่การตั้งค่าสถานะบูลีน ปกป้องไฟล์ต้นฉบับ, อนุญาตทุกคำขอ, แยกสิทธิ์การดูและดาวน์โหลด, ตรวจสอบการตั้งค่าตัวดูที่สนับสนุน, บันทึกการเข้าถึง, และทดสอบการพยายามข้ามอินเทอร์เฟซโดยตรง

เมื่อมีการควบคุมเหล่านี้อยู่ Doconut สามารถให้ประสบการณ์เอกสารแบบฝังได้ในขณะที่แอปพลิเคชัน ASP.NET ของคุณบังคับใช้นโยบายความปลอดภัยรอบ ๆ ตัวดูนั้น.