2011-04-07 17 views
8

Tenemos una solución con muchos proyectos en ella (probablemente 20 o más). Recientemente, hemos realizado algunos cambios que requieren que un par de esos ensamblajes se puedan llamar desde COM, lo que significa que necesitamos asignarles un nombre seguro. Esas asambleas hacen referencia a otras personas en nuestro proyecto, lo que significa que también necesitan un nombre fuerte. También tienen atributos InternalsVisibleTo, por lo que los ensamblados que se otorgan también deben tener un nombre fuerte.Ventajas/desventajas de ensamblados con nombre seguro/firmado

En lugar de buscar y encontrar qué ensambles necesitan firmar/nombrar con fuerza, les recomendé que simplemente los nombremos todos. Esto ha puesto nervioso a un par de personas. Estoy argumentando que no hay ningún riesgo, pero quieren ventajas y desventajas de la firma de asambleas. Las únicas cosas que he podido llegar a son:

Pros

  • es un requisito para llamar a la asamblea desde COM
  • Sería nos permitirá poner los ensamblados en la GAC ( que no lo hacemos ahora)
  • previene manipulación (que albergan la aplicación, no está instalado en sitios del cliente, por lo que no es tan grande un problema)

Contras

  • Se requiere que todas las asambleas que utilizamos en el futuro ser firmado

Tengo dos preguntas específicas:

  1. diría usted que, en general, es una buena idea para firmar/nombrar asambleas?
  2. ¿Puedes pensar en otros pros o contras?
+1

¿De dónde viene la idea de que todo debe estar firmado ahora? Son ensamblajes sin firmar que son virales: no se puede hacer referencia a un ensamblaje sin firmar desde un ensamblaje firmado. Puedes hacer lo contrario sin embargo. Los que * deben * firmar se deben a las razones que describió en el primer párrafo. –

+0

BTW: no detiene la manipulación. Puede quitar el SN y cambiar los conjuntos de referencia, y ya está listo. Lo hice como una prueba de concepto en algún software comercial usando Reflector y Reflexil –

+0

@David: e incluso puede hacerlo solo con ilasm e ildasm. @Future David: gracias, cambié el orden de firmado/sin firmar. –

Respuesta

3
  • Es una exigencia de ClickOnce que sus montajes se firman
  • Una gran cantidad de proyectos de código abierto no distribuya montajes firmados, y son a menudo no trivial para compilar con su propia SNK
+0

Combinado en 1 respuesta. Gracias a los comentarios de la comunidad sobre esto. –

+0

+1 para la mención de distribuciones no firmadas. Es una molestia cuando tienes que instalar cosas para que puedas ejecutar el script de construcción de un proyecto de código abierto, porque los desarrolladores escucharon algo de FUD sobre la firma de ensamblajes y se asustaron. –

+0

Hemos considerado el problema del código abierto. Nuestra empresa es reacia a incorporar soluciones de código abierto, y las pocas que usamos proporcionan un ensamble firmado o son muy simples para construir una versión firmada. –

5

Tu única estafa es falsa. En realidad es un profesional.

conjuntos sin signo pueden ser utilizados exclusivamente por asambleas sin signo. Los ensambles firmados pueden ser usados ​​por ambos ensambles firmados y ensambles sin firmar.

+4

Creo que también es un profesional, pero ser objetivo al respecto, significa que cualquier software que incorporemos a la organización desde ahora (comercial, de código abierto, shareware, lo que sea) debe proporcionar una versión firmada _o_ debemos estarlo capaz de construir una versión firmada con nuestro propio snk. Creo que desde la perspectiva del negocio que podría considerarse una estafa. –

+1

@ Craig: Ese es un punto válido. Estaba pensando en una situación ideal con proveedores responsables :(. Es triste que no todos los que hacen software reutilizable firmen lo que publican sin siquiera pensarlo dos veces: es la única forma de hacer felices a todos sus clientes. –

2

"Es un requisito para llamar a la asamblea de COM"

Usted no necesita firmar un ensamblado para que sea un componente COM. Implementé mucho servidor COM sin firmar el ensamblado.

algunos Contras: más

  • usted no puede actualizar un montaje con una nueva versión sin tener que reemplazar todos los otros conjuntos que lo requieran => Componentes No se puede compartir fácilmente
  • componentes de terceros no pueden utilizar no firmados (muchos libre/Open Source)
  • montajes firmados en el GAC no se validan, alguien puede alterar el mal/reemplazar el ensamblaje firmado con cualquier cosa y sus programas aceptará sin problemas esta nada link
+0

"no se puede actualizar un ensamblaje con una nueva versión sin reemplazar todos los demás ensambles que lo requieran => sin componentes compartidos fácilmente "No es cierto. Debe agregar una línea a su configuración para la redirección de enlace. Puede ser una estafa, pero no tan catastrófica. – jbtule

+1

tiene que agregarlo a cada aplicación que usa el componente. No es fácil si tiene la aplicación-> módulo-> componente y actualiza el componente, entonces la aplicación tiene que agregar la redirección para el componente que ni siquiera conoce. escenario para dlls de utilidad incorporado en los módulos – Firo

+0

"no se puede actualizar un conjunto con una nueva versión sin reemplazar todos los demás ensambles que lo requieran" debe decirle eso a Microsoft, porque lo han estado haciendo durante mucho tiempo ahora. – Voo

Cuestiones relacionadas