Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De beveiligingsfuncties van Microsoft .NET Framework en Microsoft Office kunnen u helpen uw Office-oplossingen te beschermen tegen mogelijke beveiligingsrisico's. In dit onderwerp worden enkele van deze bedreigingen uitgelegd en worden aanbevelingen gegeven om u te beschermen tegen deze bedreigingen. Het bevat ook informatie over de invloed van Microsoft Office-beveiligingsinstellingen op Office-oplossingen.
Van toepassing op: De informatie in dit onderwerp is van toepassing op projecten op documentniveau en VSTO-invoegtoepassingsprojecten. Zie Functies die beschikbaar zijn per Office-toepassing en projecttype.
Vertrouwde code wordt opnieuw gebruikt in een nieuw, schadelijk document
Een aanvaller kan vertrouwde code gebruiken die bedoeld is voor een bepaald doel, bijvoorbeeld het downloaden van persoonlijke gegevens voor een toepassing voor werk, en deze opnieuw gebruiken in een ander document, zoals een werkblad. De code weet niet dat het oorspronkelijke document niet wordt uitgevoerd en kan andere bedreigingen openen, zoals het onthullen van persoonlijke gegevens of het uitvoeren van code met verhoogde bevoegdheden, wanneer het door een andere gebruiker wordt geopend. De aanvaller kan ook de gegevens in het werkblad wijzigen, zodat deze zich onverwacht gedraagt wanneer deze naar het slachtoffer wordt verzonden. Door de waarden, formules of presentatiekenmerken van een werkblad te wijzigen dat is gekoppeld aan code, kan een kwaadwillende gebruiker een andere gebruiker aanvallen door een gewijzigd bestand te verzenden. Het kan ook mogelijk zijn dat gebruikers toegang hebben tot informatie die ze niet mogen zien door waarden in het werkblad te wijzigen.
Omdat zowel de assemblylocatie als de documentlocatie voldoende bewijs moeten hebben om een aanval uit te voeren, is het lastig deze uit te voeren. Documenten in e-mailbijlagen of op niet-vertrouwde intranetservers hebben bijvoorbeeld niet voldoende machtigingen om uit te voeren.
Om deze aanval mogelijk te maken, moet de code zelf zodanig worden geschreven dat deze beslissingen neemt op basis van mogelijk onbetrouwbaar gegevens. Een voorbeeld is het maken van een werkblad met een verborgen cel die de naam van een databaseserver bevat. De gebruiker verzendt het werkblad naar een ASPX-pagina, die probeert verbinding te maken met die server met behulp van SQL-verificatie en een in code vastgelegd SA-wachtwoord. Een aanvaller kan de inhoud van de verborgen cel vervangen door een andere computernaam en het SA-wachtwoord ophalen. Om dit probleem te voorkomen, moet u nooit wachtwoorden in code coderen en altijd server-id's controleren op een interne lijst met servers die bekend zijn dat ze goed zijn voordat u toegang krijgt tot de server.
Aanbevelingen
Valideer altijd invoer en gegevens, ongeacht of deze afkomstig zijn van de gebruiker, het document, een database, een webservice of een andere bron.
Wees voorzichtig met het blootstellen van bepaalde typen functionaliteit, zoals het verkrijgen van bevoegde gegevens namens de gebruiker en het in een niet-beveiligd werkblad plaatsen.
Afhankelijk van het type toepassing kan het zinvol zijn om te controleren of het oorspronkelijke document wordt uitgevoerd voordat u code uitvoert. Controleer bijvoorbeeld of het wordt uitgevoerd vanuit een document dat is opgeslagen op een bekende, veilige locatie.
Het is misschien een goed idee om een waarschuwing weer te geven wanneer het document wordt geopend als uw toepassing bevoegde acties uitvoert. U kunt bijvoorbeeld een welkomstscherm of een opstartdialoogvenster maken waarin wordt aangegeven dat de toepassing toegang heeft tot persoonlijke gegevens en dat de gebruiker ervoor kiest om door te gaan of te annuleren. Als een eindgebruiker een dergelijke waarschuwing krijgt van een schijnbaar onschuldig document, kan hij of zij de toepassing afsluiten voordat er iets wordt gecompromitteerd.
Code wordt geblokkeerd door de Outlook Object Model Guard
Microsoft Office kan code beperken tot het gebruik van bepaalde eigenschappen, methoden en objecten in het objectmodel. Door de toegang tot deze objecten te beperken, helpt Outlook om te voorkomen dat e-mailwormen en virussen het objectmodel gebruiken voor schadelijke doeleinden. Deze beveiligingsfunctie wordt de Outlook-objectmodelbeveiliging genoemd. Als een VSTO-invoegtoepassing probeert een beperkte eigenschap of methode te gebruiken terwijl de objectmodelbeveiliging is ingeschakeld, wordt in Outlook een beveiligingswaarschuwing weergegeven waarmee de gebruiker de bewerking kan stoppen of dat de gebruiker gedurende een beperkte periode toegang kan verlenen tot de eigenschap of methode. Als de gebruiker de bewerking stopt, genereert Outlook VSTO-invoegtoepassingen die zijn gemaakt met behulp van Office-oplossingen in Visual Studio een COMException.
De objectmodelbeveiliging kan op verschillende manieren van invloed zijn op VSTO-invoegtoepassingen, afhankelijk van of Outlook wordt gebruikt met Microsoft Exchange Server:
Als Outlook niet wordt gebruikt met Exchange, kan een beheerder de objectmodelbeveiliging in- of uitschakelen voor alle VSTO-invoegtoepassingen op de computer.
Als Outlook wordt gebruikt met Exchange, kan een beheerder de objectmodelbeveiliging voor alle VSTO-invoegtoepassingen op de computer in- of uitschakelen, of de beheerder kan opgeven dat bepaalde VSTO-invoegtoepassingen kunnen worden uitgevoerd zonder dat de objectmodelbeveiliging wordt aangeroepen. Beheerders kunnen ook het gedrag van de objectmodelbeveiliging wijzigen voor bepaalde gebieden van het objectmodel. Beheerders kunnen bijvoorbeeld automatisch toestaan dat VSTO-invoegtoepassingen programmatisch e-mail verzenden, zelfs als de objectmodelbeveiliging is ingeschakeld.
Vanaf Outlook 2007 is het gedrag van de objectmodelbeveiliging gewijzigd om de ontwikkelaars- en gebruikerservaring te verbeteren en outlook veilig te houden. Zie Codebeveiligingswijzigingen in Outlook 2007 voor meer informatie.
Waarschuwingen voor objectmodelbeveiliging minimaliseren
Om beveiligingswaarschuwingen te voorkomen wanneer u beperkte eigenschappen en methoden gebruikt, moet u ervoor zorgen dat uw VSTO-invoegtoepassing Outlook-objecten verkrijgt uit het Application veld van de ThisAddIn klasse in uw project. Zie VSTO-invoegtoepassingen voor programma's voor meer informatie over dit veld.
Alleen Outlook-objecten die van dit object zijn verkregen, kunnen worden vertrouwd door de objectmodelbeveiliging. Objecten die van een nieuw Microsoft.Office.Interop.Outlook.Application object worden verkregen, worden daarentegen niet vertrouwd en de beperkte eigenschappen en methoden veroorzaken beveiligingswaarschuwingen als de objectmodelbeveiliging is ingeschakeld.
In het volgende codevoorbeeld wordt een beveiligingswaarschuwing weergegeven als de objectmodelbeveiliging is ingeschakeld. De To eigenschap van de Microsoft.Office.Interop.Outlook.MailItem klasse wordt beperkt door de objectmodelbeveiliging. Het Microsoft.Office.Interop.Outlook.MailItem object is niet vertrouwd omdat de code het ophaalt van een Microsoft.Office.Interop.Outlook.Application die is gemaakt met behulp van de nieuwe operator, in plaats van het op te halen uit het Application veld.
private void UntrustedCode()
{
Microsoft.Office.Interop.Outlook.Application application =
new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
application.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
Microsoft.Office.Interop.Outlook.MailItem;
mailItem1.To = "someone@example.com";
MessageBox.Show(mailItem1.To);
}
In het volgende codevoorbeeld ziet u hoe u de beperkte To-eigenschap gebruikt van een Microsoft.Office.Interop.Outlook.MailItem object die door de objectmodelbeveiliging wordt vertrouwd. De code maakt gebruik van het vertrouwde Application veld om het Microsoft.Office.Interop.Outlook.MailItemop te halen.
private void TrustedCode()
{
Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
this.Application.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
Microsoft.Office.Interop.Outlook.MailItem;
mailItem1.To = "someone@example.com";
MessageBox.Show(mailItem1.To);
}
Opmerking
Als Outlook wordt gebruikt met Exchange, garandeert het verkrijgen van alle Outlook-objecten ThisAddIn.Application niet dat uw VSTO-invoegtoepassing toegang heeft tot het volledige Outlook-objectmodel. Als een Exchange-beheerder bijvoorbeeld instelt dat alle pogingen om toegang te krijgen tot adresgegevens automatisch worden geweigerd met behulp van het Outlook-objectmodel, staat Outlook het vorige codevoorbeeld niet toe om toegang te krijgen tot de eigenschap Aan, ook al gebruikt het codevoorbeeld het vertrouwde ThisAddIn.Application veld.
Opgeven welke invoegtoepassingen u wilt vertrouwen wanneer u Exchange gebruikt
Wanneer Outlook wordt gebruikt met Exchange, kunnen beheerders opgeven dat bepaalde VSTO-invoegtoepassingen kunnen worden uitgevoerd zonder de objectmodelbeveiliging te tegenkomen. Outlook VSTO-invoegtoepassingen die zijn gemaakt met behulp van Office-oplossingen in Visual Studio, kunnen niet afzonderlijk worden vertrouwd; ze kunnen alleen worden vertrouwd als een groep.
Outlook vertrouwt een VSTO-invoegtoepassing op basis van een hashcode van de ingangspunt-DLL van de VSTO-invoegtoepassing. Alle Outlook VSTO-invoegtoepassingen die zijn gericht op de Visual Studio Tools voor Office-runtime, gebruiken dezelfde TOEGANGSPUNT-DLL (VSTOLoader.dll). Dit betekent dat als een beheerder een VSTO-invoegtoepassing die gericht is op de Visual Studio Tools for Office-runtime vertrouwt en deze kan worden uitgevoerd zonder de objectmodelbeveiliging tegen te komen, dat dan ook alle andere VSTO-invoegtoepassingen die gericht zijn op de Visual Studio Tools for Office-runtime worden vertrouwd. Zie De methode opgeven die Outlook gebruikt om functies voor viruspreventie te beheren voor meer informatie over het vertrouwen van specifieke VSTO-invoegtoepassingen zodat ze kunnen worden uitgevoerd zonder hinder van de objectmodelbeveiliging.
Machtigingswijzigingen worden niet onmiddellijk van kracht
Als de beheerder machtigingen voor een document of assembly aanpast, moeten gebruikers alle Office-toepassingen afsluiten en vervolgens opnieuw starten om deze wijzigingen af te dwingen.
Andere toepassingen die Microsoft Office-toepassingen hosten, kunnen ook voorkomen dat de nieuwe machtigingen worden afgedwongen. Gebruikers moeten alle toepassingen die gebruikmaken van Office, gehost of zelfstandig, afsluiten wanneer beveiligingsbeleid wordt gewijzigd.
Instellingen van het Vertrouwenscentrum in het Microsoft Office-systeem hebben geen invloed op aanpassingen op documentniveau of invoegtoepassingen
Gebruikers kunnen voorkomen dat VSTO-invoegtoepassingen worden geladen door een optie in te stellen in het Vertrouwenscentrum. VSTO-invoegtoepassingen en aanpassingen op documentniveau die zijn gemaakt met office-oplossingen in Visual Studio, worden echter niet beïnvloed door deze vertrouwensinstellingen.
Als de gebruiker voorkomt dat VSTO-invoegtoepassingen worden geladen met behulp van het Vertrouwenscentrum, worden de volgende typen VSTO-invoegtoepassingen niet geladen:
Beheerde en onbeheerde COM VSTO-invoegtoepassingen.
Beheerde en onbeheerde slimme documenten.
Beheerde en onbeheerde Automation VSTO-invoegtoepassingen.
Beheerde en onbeheerde realtime gegevensonderdelen.
In de volgende procedures wordt beschreven hoe gebruikers het Vertrouwenscentrum kunnen gebruiken om te voorkomen dat VSTO-invoegtoepassingen worden geladen in Microsoft Office 2013 en Microsoft Office 2010. Deze procedures zijn niet van invloed op VSTO-invoegtoepassingen of aanpassingen die zijn gemaakt met behulp van Office-ontwikkelhulpprogramma's in Visual Studio.
VSTO-invoegtoepassingen uitschakelen in Microsoft Office 2010- en Microsoft Office 2013-toepassingen
Kies het tabblad Bestand .
Kies de knop Opties voor ApplicationName.
Kies In het deelvenster Categorieën het Vertrouwenscentrum.
Kies instellingen voor het Vertrouwenscentrum in het detailvenster.
Kies in het deelvenster Categorieën Invoegtoepassingen.
Selecteer in het detailvenster Toepassingsinvoegtoepassingen vereisen om te worden ondertekend door vertrouwde uitgever of Schakel alle toepassingsinvoegtoepassingen uit.