Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La plupart des solutions aux problèmes répertoriés dans Problèmes de sécurité WIA courants nécessitent que les objets en question disposent de descripteurs de sécurité qui accordent l’accès aux entités appropriées, telles que les comptes LocalService .
En règle générale, le compte LocalService a accès aux ressources dont les listes de contrôle d’accès autorisent l’accès par un compte LocalService , tout le monde ou des utilisateurs authentifiés. Le service ne peut pas partager d’objets (canaux, mappage de fichiers, synchronisation, etc.) avec d’autres applications, sauf s’il crée une liste de contrôle d’accès discrétionnaire (DACL) qui autorise un utilisateur ou un groupe d’utilisateurs à accéder à l’objet.
L’exemple de code suivant montre comment définir le descripteur de sécurité. Cette approche peut être utilisée si une application et un pilote doivent partager un objet d’événement nommé.
//
// Security descriptor in SDDL form:
// D: - Indicates what follows is a
// Discretionary Access Control List (DACL)
// (A;;GA;;;LS) - Grants generic all access to LocalService
// (A;;GA;;;BA) - Grants generic all access to Built-in Admins
// (A;;GA;;;IU) - Grants generic all access to Interactive User
//
#define MY_EVENT_DACL TEXT("D:(A;;GA;;;LS)(A;;GA;;;BA)(A;;GA;;;IU)")
//
// Allocate appropriate security attributes for the named event
// to be shared between driver and app running under
// interactive user's account.
//
SECURITY_ATTRIBUTES sa = { sizeof(sa), FALSE, NULL };
if(ConvertStringSecurityDescriptorToSecurityDescriptor(
MY_EVENT_DACL,
SDDL_REVISION_1,
&(sa.lpSecurityDescriptor), NULL))
{
h_MyEvent = CreateEvent(&sa, // Our security descriptor
// allowing access to
// Admins, LocalService
// and the Interactive
// User
bManualReset,
bInitialState,
tszName);
if (h_MyEvent != NULL)
{
// Success!
}
else
{
// Failed. Do error cleanup...
.
.
.
}
}
else
{
// Failed. Do error cleanup...
.
.
.
}
Les clés de Registre peuvent également être créées avec les listes de contrôle d’accès appropriées via un fichier INF. Par exemple, pour créer une clé de Registre dans la clé SOFTWARE accessible uniquement aux administrateurs et au pilote exécuté sous LocalService, ajoutez les entrées suivantes à votre fichier INF :
[DDInstallSection]
Addreg=MyAddReg
[DDInstallSection.MyAddReg]
HKLM,"SOFTWARE\MyCompany\MySpecialKey\"
[DDInstallSection.MyAddReg.Security]
"D:(A;CIOI;GA;;;BA)(A;CIOI;GA;;;LS)"
Pour plus d’informations sur les fichiers INF, consultez Fichiers INF pour les appareils WIA.
Pour plus d’informations sur le modèle Sécurité Windows, consultez la documentation Sécurité Windows. Les rédacteurs de pilotes doivent également connaître les bonnes pratiques de sécurité générales qui réduisent le risque que les utilisateurs destructeurs exploitent correctement les vulnérabilités de leurs pilotes. « Writing Secure Code » (ISBN 0-7356-1588-8) de Microsoft Press est l’une des ressources utiles disponibles.