安全說明
Aspose.Words是一種高級Word文檔處理API,用于執(zhí)行各種文檔管理和操作任務(wù)。API支持生成,修改,轉(zhuǎn)換,呈現(xiàn)和打印文檔,而無需在跨平臺應(yīng)用程序中直接使用Microsoft Word。
Aspose API支持流行文件格式處理,并允許將各類文檔導(dǎo)出或轉(zhuǎn)換為固定布局文件格式和最常用的圖像/多媒體格式。
默認(rèn)情況下,當(dāng)使用 DocumentBuilder 導(dǎo)入文檔或插入圖像時,Aspose.Words for .NET 可以加載遠(yuǎn)程資源,例如圖像、CSS 樣式或外部 HTML 文檔。此行為允許您詳細(xì)處理文檔,但如果該庫是 Web 應(yīng)用程序的一部分,則可能會導(dǎo)致一些安全風(fēng)險。
Aspose技術(shù)交流群(761297826)
Aspose.Words 不能用作防病毒軟件。因此,它不提供有關(guān)文檔中是否存在惡意組件的信息。為了確保您的數(shù)據(jù)安全,請自行檢查從外部來源獲取的文檔。反過來,Aspose.Words 提供了有關(guān)如何處理加載外部資源時可能出現(xiàn)的問題的建議。
安全問題
加載外部資源時存在許多典型的安全問題。
通過鏈接圖像泄露憑證
在基于 Windows 的主機上,默認(rèn)情況下將處理包含對使用 UNC 路徑(例如“\example.com\a\b ”)的資源的引用的文檔。在域環(huán)境中,這將導(dǎo)致主機以散列格式將其域憑據(jù)發(fā)送到指定的服務(wù)器。
如果攻擊者能夠說服用戶或服務(wù)器處理具有指向他們控制的主機的資源鏈接的文檔,則攻擊者將收到 NTLM 哈希格式的用戶或服務(wù)帳戶憑據(jù)。然后,此類數(shù)據(jù)可以在經(jīng)典的哈希傳遞攻擊中重復(fù)使用,從而允許攻擊者以受害者用戶或服務(wù)帳戶的身份獲得對任何資源的訪問權(quán)限。
如果相關(guān)帳戶使用弱密碼或可猜測的密碼,攻擊者還可以執(zhí)行密碼破解攻擊來恢復(fù)帳戶密碼以供進(jìn)一步惡意使用。
通過鏈接圖像公開本地圖像
與前面的情況類似,引用本地圖像文件處理文檔將導(dǎo)致該文件包含在最終文檔中。這可能會導(dǎo)致敏感信息泄露。
拒絕服務(wù)
攻擊者可以上傳引用或包含極大圖像的文檔,即所謂的“減壓炸彈”。在處理這些圖像時,該庫將消耗大量的內(nèi)存和CPU時間。
通過鏈接內(nèi)容偽造服務(wù)器端請求
攻擊者可以創(chuàng)建一系列包含內(nèi)部 IP 地址和端口常見組合的嵌入式鏈接的文檔,然后使用 Aspose.Words 庫將它們提交到 Web 服務(wù)來處理這些文檔。
根據(jù)服務(wù)處理文檔的時間長度,攻擊者可以確定給定的 IP/端口組合是否被防火墻過濾:
-
較長的處理時間表明服務(wù)器發(fā)送的 TCP SYN 數(shù)據(jù)包被防火墻丟棄
-
快速處理時間表明已成功連接
安全問題解決方案
為了解決上述問題并提高Web應(yīng)用程序的安全性,您可以使用IResourceLoadingCallback來控制或禁用外部資源的加載。
以下代碼示例顯示如何禁用外部圖像加載:
public class DisableExternalImagesHandler : IResourceLoadingCallback { public ResourceLoadingAction ResourceLoading(ResourceLoadingArgs args) { // Skip external images loading. return (args.ResourceType == ResourceType.Image) ? ResourceLoadingAction.Skip : ResourceLoadingAction.Default; } } ... const string documentFilename = "input.docx"; var disableExternalImagesOptions = new LoadOptions { ResourceLoadingCallback = new DisableExternalImagesHandler() }; var doc = new Document(documentFilename, disableExternalImagesOptions);
點擊復(fù)制
以下代碼示例顯示如何禁用遠(yuǎn)程資源:
private class DisableRemoteResourcesHandler : IResourceLoadingCallback { public ResourceLoadingAction ResourceLoading(ResourceLoadingArgs args) { return IsLocalResource(args.OriginalUri) ? ResourceLoadingAction.Default : ResourceLoadingAction.Skip; } private static bool IsLocalResource(string fileName) { DirectoryInfo dirInfo; try { var dirName = Path.GetDirectoryName(fileName); if (string.IsNullOrEmpty(dirName)) return false; dirInfo = new DirectoryInfo(dirName); } catch { return false; } foreach (DriveInfo d in DriveInfo.GetDrives()) { if (string.Compare(dirInfo.Root.FullName, d.Name, StringComparison.OrdinalIgnoreCase) == 0) return d.DriveType != DriveType.Network; } return false; } } ... var disableRemoteResourcesOptions = new LoadOptions { ResourceLoadingCallback = new DisableRemoteResourcesHandler() }; var doc = new Document(documentFilename, disableRemoteResourcesOptions);
點擊復(fù)制
如需下載產(chǎn)品Aspose.Words ,請點擊產(chǎn)品名進(jìn)入下載頁面