2009-04-01 16 views
20

Además del hecho de que el código en sí puede acceder a la memoria directamente. ¿Cuáles son las otras implicaciones de usar el indicador del compilador "/ inseguro" y la palabra clave "fija"? ¿Hay algún efecto secundario relacionado con la firma del código y la implementación de mi .exe (mi aplicación solo es de escritorio)?Cuáles son las implicaciones de usar el código de seguridad

(No se trata de si es o no debería estar haciendo esto, la razón por la está cubierto en mi pregunta here)

Respuesta

6

código no seguro no es verificable, por lo que tiene que ser consciente de ello. En un entorno de plena confianza, no es gran cosa, pero si tiene otros entornos que tienen un conjunto de permisos más restringido, esto podría afectarlo allí.

12

Puede poner las implicaciones en dos cubos.

La primera es cómo afecta el entorno de su aplicación. El uso de un código no seguro requiere que su ensamblado se ejecute en un entorno de confianza total. No es posible ejecutarlo en un entorno restringido, como ciertas configuraciones de seguridad de Hacer clic una vez. La razón es que el código inseguro impide que CLR garantice la seguridad del tipo. Haga clic en una vez aunque sin restricciones de seguridad no debería tener un problema.

Lo segundo es lo que significa para la forma de codificar. El uso de un código no seguro generalmente implica el uso de punteros y, en particular, su uso para realizar clasificaciones avanzadas a través de PInvoke. Sin embargo, no hay nada inherentemente malo en ninguna de estas acciones. Solo requiere una comprensión significativamente mayor del CLR y la clasificación que el código "seguro". La fijación de objetos es un gran ejemplo de conocimiento que necesitaría tener en firme antes de comenzar a usar estas funciones.

2

Para añadir a la referencia del objeto a fijar Jared ...

Cuando el uso de punteros acceder a la memoria directamente en C#, que son vulnerables a la CLR mover un objeto en torno a la memoria en tiempo de ejecución. Esto significa que su puntero puede repentinamente apuntar a la sección equivocada de la memoria. La palabra clave Fixed fijará el objeto en la memoria para evitar este problema.

Cuestiones relacionadas