Esta fue una tarea difícil de buscar. Si tengo un proyecto de aplicación web de rieles de código abierto cuyo código fuente está alojado públicamente, como en GitHub, ¿qué información debe ocultarse o intercambiarse si esa aplicación se va a ejecutar en producción en un sitio web público? Mi suposición es que cosas como config/initilizers/secret_token.rb, cualquier cosa de salting de autenticación y la información de inicio de sesión de la base de datos no deberían ser las mismas en producción que en desarrollo. ¿Qué otras precauciones deberían tomarse para garantizar que el sitio de producción no sea vulnerable a personas que manipulan las sesiones o cualquier otra cosa que no esté considerando? Fuentes¿Qué pasa si algún código fuente de un proyecto de rieles debe oscurecerse incluso para un proyecto de código abierto?
Respuesta
carriles específicos de información sensible
Scrub información sensible fuera de:
config/environments/*.rb
config/initializers/cookie_verification_secret.rb
config/initializers/secret_token.rb
config/initializers/session_store.rb
- los archivos añadidos a apoyar a las bibliotecas de terceros, tales como
config/memcached.yml
config/database.yml
db/seeds.rb
- cualquier tarea en el rastrillo de
lib/tasks
. test/fixtures/*
cambios generales
La inclusión de esta sólo porque creo que es una buena lista de cosas a tener en cuenta para la liberación de software de código abierto que también tiene en la producción.
- Retire la información sensible:
- sales contraseña
- credenciales de usuario por defecto pobladas por código o semillas información
- autenticación para cualquier servidor externo o servicio
- bases de datos
- APIs de terceros
- eCommerse solutions
- cualquier dato cabeza de serie, que potencialmente dar a conocer secretos comerciales
- Código de ensayo a fondo para hazañas. Si están en su código y su código está disponible para el público, las personas los encontrarán y sabrán cómo poner en peligro su sitio.
- Limpiar el código. El código es una forma de publicidad para su sitio; es una de las muchas cosas que representarán su sitio/compañía. Asegúrese de cambiar los nombres de variables/funciones/mensajes de error/datos sin identificar/etc que fueron escritos con humor o frustración, pero que se verían mal para el público.
- Contribuya activamente con sus mejoras y correcciones de errores al proyecto y responda a las solicitudes externas de correcciones/mejoras o incluso solicitudes de extracción para aquellos que han resuelto un problema ellos mismos. Esto mantiene el proyecto activo y también ayuda con el ángulo publicitario.
- Asegúrese de otorgar crédito donde se debe crédito. Ahora que su código es público, las personas sabrán si han utilizado códigos/bibliotecas de terceros. Si dicho código viene con cláusulas de atribución en sus acuerdos de licencia, asegúrese de que su proyecto cumpla con esos acuerdos.
La respuesta anterior de Shaun es muy minuciosa.
Además, me gustaría recomendar el uso de .gitignore a su ventaja para evitar que se cometan archivos con información confidencial.
Cualquier archivo que contenga claves o contraseñas de API, etc. debe estar en .gitignore. Típicamente, esto incluye:
database.yml
log/*
tmp/*
Si tiene claves de la API asignados a las constantes en los archivos de código, lo recomiendo poner todas las claves de la API, contraseñas, etc. en un archivo site.yml. A continuación, agregue este archivo a .gitignore y agregue un inicializador para analizar este archivo en una constante. Usa esa constante para acceder a los datos secretos.
Por ejemplo:
config/site.yml:
hoptoad_api_key: ABCDEF1234567890
config/inicializador/01_site.rb
SITE = HashWithIndifferentAccess.new(YAML.load(File.open(File.join(Rails.root, 'config', 'site.yml'))))
config/inicializador/hoptoad.rb
HoptoadNotifier.configure do |config|
config.api_key = SITE['hoptoad_api_key']
end
Tenga en cuenta que la inicialización Los controladores se ejecutan en orden alfabético. Si necesita la constante SITE
en otros inicializadores, asegúrese de nombrar el archivo que lee la configuración con un número inicial para que se ejecute primero.
Para ser más fácil de usar para un proyecto de código abierto, se debe incluir un archivo database.yml.sample y site.yml.sample con ejemplos y/o explicar las configuraciones necesarias en su README.
- 1. ¿Cómo financiar un proyecto de código abierto?
- 2. ¿Cómo transfieres un proyecto de código abierto?
- 3. Buscando consejo para tomar un proyecto de código abierto
- 4. ¿Cómo crear un proyecto de iOS de código abierto?
- 5. ¿Qué pensar al hacer un proyecto de código abierto?
- 6. ¿Qué es un buen primer proyecto de código abierto?
- 7. ¿Cómo elegir un proyecto de código abierto para unirse?
- 8. ¿Hay algún proyecto de ejemplo de código abierto JEE5 EJB3 + JSF de fuente abierta?
- 9. servidor proxy de código abierto C# - ¿algún proyecto/ejemplo?
- 10. Alojando un proyecto de código abierto en varios sitios
- 11. ¿Puede indicarme un gran proyecto de código abierto de Python?
- 12. iniciando un proyecto de código abierto de Javascript
- 13. ¿Código de desbloqueo facial en un proyecto de código abierto de Android?
- 14. ¿Cómo se puede comenzar un proyecto de código abierto exitoso?
- 15. Proyecto de código abierto simple C
- 16. Xcode proyecto de iPhone archivos de código abierto para distribuir
- 17. Cómo organizar el proyecto para la versión de código abierto
- 18. ¿Proyecto de código abierto para el desarrollador de C++?
- 19. ¿Dónde puedo anunciar un proyecto de código abierto?
- 20. ¿Qué factores determinan el éxito de un proyecto de código abierto?
- 21. ¿Qué código fuente Licencia usar para su proyecto?
- 22. Proyecto de código abierto de Java para contribuir
- 23. ¿De qué es un buen proyecto de código abierto de django para aprender?
- 24. Buen proyecto django de código abierto para aprender
- 25. ¿Algún problema de seguridad al agregar una clave de nombre fuerte al control de código fuente para un proyecto de código abierto?
- 26. Buen código fuente abierto para C++
- 27. ¿Qué hosting Mercurial DVCS recomendaría para un pequeño proyecto de código abierto?
- 28. Asp.net proyecto de código abierto como una fuente de aprendizaje en C#
- 29. Algoritmo de reimplementación del proyecto de código abierto
- 30. Recomiéndame algún código fuente abierto de rieles/ruby que necesite documentación/pruebas escritas
gracias, pero realmente estoy buscando más detalles de los raíles que no sepa, que dejarlos probablemente causaría problemas de seguridad, como en config/initilizers/secret_token.rb – re5et
@ re5et: se agregó una lista de archivos de raíles para usted también. :) – Shaun