2009-10-28 11 views
8

Siempre he querido hacer que algunas de nuestras compañías tengan productos de código abierto ... pero tenemos muchas cosas en nuestro código fuente que nos harían vulnerables. ¿Cómo se maneja esto en la mayoría de los proyectos de código abierto? Por ejemplo, utilizamos algunos servicios web personalizados para realizar acciones en nuestra base de datos (Agregar cuentas, eliminar cuentas, etc.). El código fuente debería contener la clave (contraseña) que usamos para usar el servicio web. Si alguien quisiera, podrían tomar la fuente, obtener la clave para usar nuestro servicio web y causar estragos en nuestra base de datos.Open Source y cómo funciona para proyectos seguros?

¿Son solo proyectos que no deberían ser de código abierto? ¿O es común simplemente poner las cosas sensibles en un archivo o algo y no incluir esa parte? (Aunque hacer esto, haría que la fuente fuera inútil para el público, ya que perdería su funcionalidad).

Cualquier enlace o recurso en proyectos de código abierto y cómo debería manejarse este tipo de cosas sería bueno.

Gracias

+1

¿Por qué quiere abrir el código fuente del producto? Si lo haces porque crees que obtendrás mucho desarrollo libre, esa no es la forma en que funciona. Las personas solo trabajarán en proyectos que utilicen, y solo usarán proyectos que les brinden algún valor. – kdgregory

+0

Consulte también: [¿Cómo manejan los proyectos de código abierto artefactos seguros?] (Http://security.stackexchange.com/q/12295/12139) – unor

Respuesta

8

Las contraseñas y los datos sensibles no se incluyen en el archivo de origen. Si observa el diseño de software de código abierto como PHPMyAdmin, se proporciona un archivo de configuración para agregar esa información, y generalmente se almacena en la carpeta raíz del host web (o en cualquier otro lugar fuera de la carpeta www).

Así que la idea es que si su sitio web utiliza alguna información para vincular a un servicio, también debe ocultarlos en un archivo y pedirle a su usuario que proporcione la contraseña y crear su propia cuenta.

3

¿No sería posible poner sus datos sensibles en un archivo de configuración? Esto también permitirá a otros usuarios agregar fácilmente su propia información sensible, etc.

+0

es posible que el archivo de configuración no se aplique en todos los casos. normalmente usaremos archivos de base de datos/xml para almacenar configuraciones. – Raptor

2

No debe incluir los datos confidenciales en el público, por lo que una opción podría ser hacer una API pública para los servicios, y luego los usuarios necesitarían para crear una cuenta para obtener una clave API para los datos.

No creo que esto detenga los productos de código abierto, pero creo que debe reconsiderar la forma en que los datos se almacenan a través de una API pública.

1

Aunque los códigos del programa son de código abierto, sus datos confidenciales no lo son. Nunca "proporciones" tus datos a otros.

Normalmente, la verificación de hash unidireccional ya se puede usar como encriptación básica. Si se necesita seguridad adicional, use una medida adicional, como public & claves privadas & contraseñas precompartidas.

2

Si está codificando una contraseña de la base de datos en su código, lo está haciendo mal. Como han señalado otros, debe almacenar eso en un archivo de configuración separado y protegido.

Si distribuye su código, ya sea la fuente o solo un código binario, esa contraseña está disponible y puede ser recuperada por cualquiera que desee hacerlo. Las contraseñas codificadas en binarios a menudo son una cuestión trivial para que un hacker se recupere.