Conjunto de reglas Reglas recomendadas administradas para código administrado
Se puede utilizar el conjunto de reglas administradas recomendadas de Microsoft para centrarse en los problemas más importantes de su código administrado, entre los que se incluyen las posibles vulnerabilidades de seguridad, los bloqueos de la aplicación y otros errores importantes de lógica y diseño.Se recomienda incluir este conjunto de reglas en todos los conjuntos de reglas personalizados que cree para sus proyectos.
Regla |
Descripción |
---|---|
Los tipos que poseen campos desechables deben ser desechables |
|
Declarar los controladores de evento correctamente |
|
Marcar los ensamblados con AssemblyVersionAttribute |
|
Los tipos secundarios deberían poder llamar a los métodos de interfaz |
|
Los tipos que poseen recursos nativos deben ser descartables |
|
Mover P/Invokes a la clase NativeMethods |
|
No ocultar métodos de clases base |
|
Implementar IDisposable correctamente |
|
No producir excepciones en ubicaciones inesperadas |
|
Evitar aceleradores duplicados |
|
Deben existir puntos de entrada P/Invoke |
|
Los elementos P/Invoke no deben estar visibles |
|
Los tipos de diseño automático no deben ser visibles para COM |
|
Llamar a GetLastError inmediatamente después de P/Invoke |
|
Los tipos base de tipos visibles para COM deben ser visibles para COM |
|
Los métodos de registro COM se deben adjuntar |
|
Declarar los elementos P/Invoke correctamente |
|
Quitar los finalizadores vacíos |
|
Los campos de tipos de valor deberían ser portátiles |
|
Las declaraciones P/Invoke deben ser portátiles |
|
No bloquear objetos con identidad débil |
|
Revisar las consultas SQL en busca de vulnerabilidades de seguridad |
|
Especificar cálculo de referencias para argumentos de cadena P/Invoke |
|
Revisar la seguridad declarativa en los tipos de valor |
|
Los punteros no deberían estar visibles |
|
Los tipos seguros no deberían exponer campos |
|
La seguridad del método debería ser un supraconjunto del tipo |
|
Los métodos APTCA deben llamar sólo a métodos APTCA |
|
Los tipos APTCA sólo amplían tipos base APTCA |
|
No exponer indirectamente métodos con peticiones de vínculos |
|
Las peticiones de vínculos de reemplazo deberían ser idénticas a la base |
|
Incluir cláusulas Finally vulnerables en un bloque Try externo |
|
Las peticiones de vínculos de tipos requieren peticiones de herencias |
|
Los tipos críticos para la seguridad no pueden participar en la equivalencia de tipos |
|
Los constructores predeterminados deben ser al menos tan críticos para la seguridad como los constructores predeterminados de tipo base. |
|
Los delegados deben enlazarse a métodos con una transparencia coherente |
|
Los métodos deben mantener una transparencia coherente cuando reemplazan métodos base |
|
Los métodos transparentes deben contener sólo IL que se pueda comprobar |
|
Los métodos transparentes no deben llamar a métodos con el atributo SuppressUnmanagedCodeSecurity |
|
El código transparente no debe hacer referencia a elementos críticos para la seguridad |
|
Los métodos transparentes no deben satisfacer LinkDemands |
|
Los tipos deben ser al menos tan críticos para la seguridad como sus interfaces y tipos base. |
|
Los métodos transparentes no pueden usar aserciones de seguridad |
|
Los métodos transparentes no deben llamar a código nativo |
|
Iniciar de nuevo para preservar los detalles de la pila |
|
No aplicar Dispose a los objetos varias veces |
|
Inicializar campos estáticos de tipo de valor insertados |
|
No marcar los componentes con servicio como WebMethod |
|
Aplicar Dispose a los campos a los que se pueda |
|
No llamar a métodos reemplazables en constructores |
|
Los tipos descartables deben declarar el finalizador |
|
Los finalizadores deben llamar al finalizador de la clase base |
|
Implementar constructores de serialización |
|
Sobrecargar el operador de igualdad al reemplazar el tipo de valor de igualdad |
|
Marcar puntos de entrada de Windows Forms con STAThread |
|
Marcar todos los campos no serializables |
|
Llamar a métodos de clase base en tipos ISerializable |
|
Marcar los tipos ISerializable con SerializableAttribute |
|
Implementar los métodos de serialización de forma correcta |
|
Implementar ISerializable correctamente |
|
Proporcionar argumentos correctos para los métodos de formato |
|
Prueba para NaN correcta |