Ausführen mit Administratorrechten
Der erste Schritt zum Ermitteln des Kontotyps, unter dem Ihre Anwendung ausgeführt werden muss, besteht darin, zu untersuchen, welche Ressourcen die Anwendung verwendet und welche privilegierten APIs aufgerufen werden. Möglicherweise stellen Sie fest, dass die Anwendung oder große Teile davon keine Administratorrechte erfordert. Das Schreiben von Secure Code von Michael Howard und David LeBlanc bietet eine hervorragende Beschreibung der Durchführung dieser Bewertung und wird dringend empfohlen. (Diese Ressource ist in einigen Sprachen und Ländern möglicherweise nicht verfügbar.)
Sie können die Berechtigungen, die Ihre Anwendung benötigt, mit weniger Schädlichen Angriffen bereitstellen, indem Sie einen der folgenden Ansätze verwenden:
- Führen Sie unter einem Konto mit weniger Berechtigungen aus. Eine Möglichkeit hierzu ist die Verwendung von PrivilegeCheck , um zu bestimmen, welche Berechtigungen in einem Token aktiviert sind. Wenn die verfügbaren Berechtigungen für den aktuellen Vorgang nicht ausreichen, können Sie diesen Code deaktivieren und den Benutzer auffordern, sich bei einem Konto mit Administratorrechten zu anmelden.
- Unterteilen Sie in separate Anwendungsfunktionen, die Administratorberechtigungen erfordern. Sie können dem Benutzer eine Verknüpfung bereitstellen, die den Befehl RunAs ausführt. Ausführliche Anweisungen zum Einrichten der Verknüpfung finden Sie in der Hilfe nach "runas". Programmgesteuert können Sie den Befehl RunAs unter dem Registrierungsschlüssel AppId Key für Ihre Anwendung konfigurieren.
- Authentifizieren Sie den Benutzer, indem Sie CredUIPromptForCredentials (GUI) oder CredUICmdLinePromptForCredentials (Befehlszeile) aufrufen, um Benutzername und Kennwort abzurufen. Ein Beispiel finden Sie unter Fragen des Benutzers nach Anmeldeinformationen.
- Identität des Benutzers annehmen. Ein Prozess, der unter einem Konto mit hohem Privilegierten beginnt, z. B. System, kann die Identität eines Benutzerkontos annehmen, indem ImpersonateLoggedOnUser oder ähnliche Funktionen im Identitätswechsel aufgerufen werden, wodurch die Berechtigungsstufe verringert wird. Wenn jedoch ein Aufruf von RevertToSelf in den Thread eingefügt wird, kehrt der Prozess zu den ursprünglichen Systemberechtigungen zurück.
Wenn Sie festgestellt haben, dass Ihre Anwendung unter einem Konto mit Administratorrechten ausgeführt werden muss und dass ein Administratorkennwort im Softwaresystem gespeichert werden muss, finden Sie unter Behandeln von Kennwörtern informationen zu Methoden zur sicheren Vorgehensweise.