Set di regole di sicurezza per codice gestito
È necessario includere il set di regole Regole di sicurezza Microsoft affinché venga segnalato il numero più elevato possibile di problemi di sicurezza potenziali.
Regola |
Descrizione |
---|---|
Controllare l'eventuale vulnerabilità di sicurezza delle query SQL |
|
Individuare le eccezioni non CLSCompliant nei gestori generali |
|
Controllare la sicurezza imperativa |
|
Non dichiarare tipi di riferimento modificabili in sola lettura |
|
I campi di matrici non devono essere in sola lettura |
|
Asserzioni protette |
|
Controllare l'utilizzo di Deny e PermitOnly |
|
Controllare la sicurezza dichiarativa sui tipi di valori |
|
Controllare i gestori di eventi visibili |
|
I puntatori non devono essere visibili |
|
I tipi protetti non devono esporre campi |
|
La sicurezza del metodo deve essere un superset del tipo |
|
Chiamare GC.KeepAlive durante l'utilizzo di risorse native |
|
I metodi APTCA devono chiamare solo metodi APTCA |
|
I tipi APTCA devono estendere solo tipi di base APTCA |
|
Verificare la sintassi di SuppressUnmanagedCodeSecurityAttribute |
|
Impostare come sealed i metodi che soddisfano interfacce private |
|
Proteggere i costruttori di serializzazione |
|
I costruttori statici devono essere privati |
|
Non esporre in modo indiretto metodi con richieste di collegamento |
|
Le richieste di collegamento negli override devono essere identiche a quelle nei metodi di base |
|
Eseguire il wrapping delle clausole finally vulnerabili in un try esterno |
|
Per le richieste di collegamento dei tipi sono necessarie richieste di ereditarietà |
|
Le costanti SecurityCritical devono essere Transparent |
|
I tipi SecurityCritical non possono partecipare all'equivalenza del tipo |
|
I costruttori predefiniti devono essere Critical almeno come i costruttori predefiniti del tipo base |
|
Delegati devono essere associati ai metodi con trasparenza consistente |
|
I metodi devono conservare trasparenza consistente durante l'override dei metodi base |
|
Gli assembly di livello 2 non devono contenere LinkDemand |
|
I membri non devono avere annotazioni di trasparenza in conflitto |
|
I metodi Transparent devono contenere solo IL verificabile |
|
I metodi Transparent non devono chiamare i metodi con l'attributo SuppressUnmanagedCodeSecurity |
|
I metodi Transparent non possono utilizzare l'attributo HandleProcessCorruptingExceptions |
|
Il codice Transparent non deve far riferimento a elementi SecurityCritical |
|
I metodi Transparent non devono soddisfare i LinkDemand |
|
Il codice Transparent non deve essere protetto con LinkDemand |
|
I metodi Transparent non devono utilizzare SecurityDemand |
|
Il codice Transparent non deve caricare assembly da matrici di byte |
|
I metodi Transparent non devono includere SuppressUnmanagedCodeSecurityAttribute |
|
I tipi devono essere Critical almeno come le interfacce e i tipi base relativi |
|
I metodi Transparent non possono utilizzare asserzioni di sicurezza |
|
I metodi Transparent non devono effettuare chiamate nel codice nativo |
|
Gli assembly devono avere nomi sicuri validi |