Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
By verstek, Aspose.Words vir .NET kan afgeleë hulpbronne soos beelde, CSS style, of eksterne HTML dokumente laai wanneer dokumente ingevoer word of beelde ingevoeg word met behulp van die DocumentBuilder. Hierdie gedrag laat jou toe om jou dokumente in volle detail te verwerk, maar kan’n rede wees vir sekere sekuriteitsrisiko’s as die biblioteek deel is van’n webtoepassing.
In hierdie artikel kyk ons na algemene sekuriteitskwessies wat kan ontstaan wanneer eksterne hulpbronne gelaai word en gee aanbevelings oor hoe om sulke probleme te vermy.
Daar is’n aantal tipiese sekuriteitsprobleme wanneer eksterne hulpbronne gelaai word.
Op Windows-gebaseerde gashere sal dokumente wat verwysings bevat na hulpbronne wat UNC paaie gebruik soos '\example.com\a\b' standaard verwerk word. In’n domein omgewing, sal dit veroorsaak dat die gasheer sy domein geloofsbriewe in’n gehaash formaat te stuur na die gespesifiseerde bediener.
As’n aanvaller in staat is om’n gebruiker of bediener te oortuig om’n dokument te verwerk met so’n hulpbron skakel wat wys na’n gasheer wat hulle beheer, sal die aanvaller die gebruiker of diens rekening geloofsbriewe in NTLM hash formaat ontvang. Sulke data kan dan hergebruik word in’n klassieke pass-the-hash aanval, sodat die aanvaller toegang tot enige hulpbron as die slagoffer gebruiker of diens rekening te kry.
As die betrokke rekening’n swak of raaibare wagwoord gebruik, kan die aanvaller ook’n wagwoordkraak aanval uitvoer om die rekeningwagwoord te herstel vir verdere kwaadwillige gebruik.
Soos in die vorige geval, sal die verwerking van’n dokument met’n verwysing na’n plaaslike beeldlêer daartoe lei dat die lêer in die finale dokument ingesluit word. Dit kan lei tot sensitiewe inligting openbaarmaking.
‘n aanvaller kon’n dokument oplaai wat verwys het na of uiters groot beelde ingesluit het – die sogenaamde “dekompressiebomme”. Wanneer hierdie beelde verwerk word, sal die biblioteek groot hoeveelhede geheue en CPU tyd verbruik.
‘n aanvaller kan’n reeks dokumente skep wat ingebedde skakels bevat na algemene kombinasies van interne IP adres en poort, en dit dan aan’n webdiens stuur deur die Aspose.Words biblioteek te gebruik om die dokumente te verwerk.
Gebaseer op die lengte van die tyd wat die diens gebruik om die dokument te verwerk, kan die aanvaller bepaal of’n gegewe IP / Poort kombinasie deur’n firewall gefiltreer word:
Om die bogenoemde probleme op te los en om die sekuriteit van webtoepassings te verbeter, kan u die laai van eksterne hulpbronne beheer of deaktiveer met behulp van IResourceLoadingCallback.
Die volgende kode voorbeeld toon hoe om eksterne beelde laai deaktiveer:
.NET
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);
Die volgende kode voorbeeld toon hoe om afgeleë hulpbronne uit te skakel:
.NET
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);
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.