2008-08-21 5 views
5

Quiero probar el comportamiento de un determinado fragmento de código .NET en entornos de confianza parcial. ¿Cuál es la forma más rápida de configurar esto? Siéntete libre de asumir que yo (y otros lectores) son noobs totales de CAS.Prueba del código .NET en entornos de confianza parcial

@Nick: Gracias por la respuesta. Por desgracia, la herramienta en cuestión es explícitamente para código no administrado. No dije "administrado" en mi pregunta, y no debería haber asumido que la gente lo deduciría de la etiqueta ".NET".

Respuesta

3

Esta es una excelente pregunta, especialmente desde un punto de vista TDD y la validación de código bajo diferentes escenarios de confianza.

Creo que la forma en que me acerco a esto sería algo en la línea de -

  • Crear un dominio de aplicación en mi código TDD utilizando la sobrecarga de AppDomain.CreateDomain() que permite pasar de una PermissionSet. El PermissionSet se construirá para que coincida con los diferentes escenarios de confianza con los que te gustaría probar.

  • cargar el ensamblado que contiene la lógica bajo prueba en el dominio de aplicación

  • crear instancias de tipos/métodos de llamada etc en dominio de aplicaciones, excepciones de seguridad trampa

Algo un poco como eso. Todavía no he tenido tiempo de dar una prueba de concepto.

1

Utilice Microsoft Application Verifier.

AppVerifier ayuda a determinar:

  • Cuando la aplicación está utilizando las API correctamente:. (inseguro TerminateThread API, el uso correcto de hilo almacenamiento local (TLS) API, o el uso correcto de las manipulaciones espacio virtual (. por ejemplo, VirtualAlloc, MapViewOfFile).
  • si la aplicación está ocultando violaciónes de acceso mediante control estructurado de excepciones.
  • si la aplicación está intentando utilizar identificadores no válidos.
  • whethe hay corrupciones de memoria o problemas en el montón.
  • Si la aplicación se queda sin memoria con pocos recursos.
  • Si se está utilizando correctamente las secciones críticas.
  • Si una aplicación que se ejecuta en un entorno administrativo funcionará correctamente en un entorno con menos privilegios.
  • Si hay problemas potenciales cuando la aplicación se ejecuta como un usuario limitado.
  • Si hay variables no inicializadas en futuras llamadas a funciones en el contexto de un subproceso.
1

Debería consultar la herramienta de configuración de .NET Framework. Es en el SDK de .NET, y se puede encontrar instrucciones sobre cómo ejecutar aquí ... http://msdn.microsoft.com/en-us/library/2bc0cxhc.aspx

En la Política de Seguridad en tiempo de ejecución sección encontrará 3 niveles de política: la empresa, la máquina y el usuario.Si explora en Máquina o Usuario, encontrará definiciones de Grupos de código y Conjuntos de permisos. Cuando dice que quiere probar algún código .NET en entornos de confianza parcial, supongo que querrá probar con uno de los conjuntos de permisos estándar ya definidos, como Internet. Debe definir un Grupo de códigos que coincida con su aplicación (o ensamblajes específicos) y asigne el conjunto de permisos elegido a ese Grupo de códigos.

Puede definir sus propios conjuntos de permisos personalizados también, pero vamos a mantenerlo simple por ahora.

Elija si desea que su nuevo grupo de códigos exista en todo el alcance de la máquina, o solo para su cuenta de usuario, y navegue en el nivel de la política de la máquina o del usuario en consecuencia. Verá un grupo de código llamado _Todo _ Código_. Crear un grupo de códigos niño dentro que uno, haciendo clic derecho y seleccionando Nueva ...

darle un nombre, decir PartialTrustGroup, a continuación, haga clic en Siguiente .

Debe especificar una condición de membresía para este grupo, y hay varios tipos. Me gusta crear una carpeta específica llamada PartialTrust en mi máquina y luego crear una condición de membresía de URL que coincida. Por lo tanto, mi URL se ve así ... file: // c:/users/martin/documents/partialtrust/*

El * es un comodín para capturar cualquier ensamblaje debajo de esa ruta. Haga clic en Siguiente.

Ahora puede elegir un conjunto de permisos para su nuevo grupo de códigos. Por ahora, elija Internet. Es un conjunto bastante restrictivo, similar a un sandbox de applet de Java. Haga clic en Siguiente y Finalizar.

Ahora haga clic derecho en su nuevo grupo de código y seleccione Propiedades. En la pestaña General, asegúrese de que esté seleccionada la casilla de verificación superior, luego haga clic en Aceptar.

Ahora, cualquier ensamblado .NET que se cargue desde una ubicación debajo de la URL especificada tendrá el conjunto de permisos Internet aplicado a ellos. Espere obtener algunas SecurityExceptions si no ha escrito su código para observar cuidadosamente el conjunto de permisos reducido.

Disculpa, esta es una descripción larga. Realmente es mucho más simple de lo que parece.

3

la funcionalidad que está buscando está integrado en Visual Studio:

En la ficha de seguridad de su proyecto, hay un botón "Avanzado ..." que le permiten configurar si desea depurar en plena confianza, o en un nivel de confianza específico.

+0

+1 Esto me ayudó muchísimo gracias. –

1

Acabo de publicar un artículo titulado Partial Trust Testing with xUnit.net en mi blog. Detalla el marco basado en xUnit.net que usamos en el equipo de Entity Framework para aplicar código bajo confianza media.

Aquí hay un ejemplo de su uso.

public class SomeTests : MarshalByRefObject 
{ 
    [PartialTrustFact] 
    public void Partial_trust_test1() 
    { 
     // Runs in medium trust 
    } 
} 

// Or... 

[PartialTrustFixture] 
public class MoreTests : MarshalByRefObject 
{ 
    [Fact] 
    public void Another_partial_trust_test() 
    { 
     // Runs in medium trust 
    } 
} 
Cuestiones relacionadas