效能與安全
DWG 解析與圖片轉換會透過外部命令列工具處理複雜的二進位檔案。請將上傳內容與所有產物都 視為不可信資料。
在受控的工作程序中執行
所有操作都是同步執行。處理較大檔案或使用者上傳內容時,建議透過佇列工作程序或容器執行,並明確 限制記憶體、CPU、程序數量、可寫空間與網路。應由應用程式控制同時執行的工作數,避免一次啟動過多轉換。
套件的逾時與大小限制有助於控制資源使用,但不能取代作業系統的沙箱隔離。
持續更新外部工具
使用仍在維護且包含安全修補的 LibreDWG、LibreOffice 與 ImageMagick 版本。簡短的 LibreDWG 版本字串 可能無法顯示已套用哪些修補,因此請保留安裝來源紀錄。也請檢查 ImageMagick 的安全政策,確認允許的 格式與外部工具符合部署需求。
記憶體與磁碟
- 命令執行前,來源會複製到套件專用的暫存工作目錄。
storeAs()會將完成結果串流至 Laravel Storage。output()會將完整產物載入 PHP 記憶體。- JSON 驗證會讀取完整 JSON,而且 JSON 可能遠大於來源 DWG。
- 圖片轉換會建立中介產物,最多執行三個轉換程序。
處理不可信來源時應保留正整數輸入/輸出上限。停用上限時,請為工作程序設定對應的記憶體與磁碟配額。
成功輸出代表的範圍
套件會確認命令執行完成,並檢查產物的基本格式結構,但成功不代表:
- 來源安全,或不會觸發解析工具的漏洞;
- 每個 DWG 物件都已正確解析或保留;
- 字型、xref 或其他外部資源都存在;
- DXF 在每個 CAD 應用顯示完全相同;
- 圖片與 AutoCAD 產物逐像素相同。
對外承諾相容性或效能前,請收集應用實際會遇到的圖檔,涵蓋不同 DWG 版本、語言、圖面物件與 後續使用的軟體,建立測試樣本。
日誌與隱私
清理暫存檔失敗時,套件會嘗試透過 Laravel 預設 logger 記錄一筆 warning。診斷資料不包含路徑、 檔名、檔案內容、原始例外訊息或堆疊追蹤。日誌服務無法使用時,警告可能無法保存。 如何排查,以及清理失敗對操作的影響,請參考暫存清理警告。
請避免在應用程式的日誌訊息中加入來源檔案內容、完整 JSON、使用者檔名或伺服器路徑。套件例外提供的 診斷資料雖已移除敏感資訊,完整例外紀錄仍可能透過原始例外或堆疊追蹤帶出路徑。請限制日誌存取權限, 並依自己的資料保留政策管理紀錄。