Estoy desarrollando un gran sitio web de comunidad / foro y me gustaría subir mi código a GitHub para tener al menos algún tipo de control de versión sobre él (porque no tengo nada más que un archivo .rar como respaldo, ni siquiera SVN ), para permitir que otros contribuyan al proyecto, y quizás también usarlo para permitir que mis futuros empleadores potenciales vean parte de mi código como una especie de plan de estudios.
Pero lo que me pregunto ahora, y me sorprende no haber visto a nadie mencionarlo antes, es el aspecto de seguridad. ¿Publicar el código de un sitio web no es un ENORME agujero de seguridad? Es como dar a un pirata informático potencial o cualquier persona que quiera encontrar cualquier posible explotación, incluso teniendo en cuenta que los archivos críticos no se cargan (contraseñas de bases de datos, scripts de autenticación, etc.).
Por supuesto, hay millones de proyectos cargados en GitHub y nadie encontrará el mío solo 'por casualidad'. Pero si lo buscan, de hecho estaría allí.
En pocas palabras: mi problema no es sobre los derechos de autor o las licencias, sino sobre otros que encuentran vulnerabilidades en mi sitio web.
¿Me estoy perdiendo algo aquí?
fuente
Respuestas:
Si. Confiar en las personas que no conocen su código fuente para evitar que encuentren vulnerabilidades de seguridad se conoce como seguridad a través de la oscuridad .
El problema: no funciona. Los hackers expertos no necesitan el código fuente para encontrar y explotar vulnerabilidades. Harán un poco de búsqueda para encontrar información que cause problemas y luego usarán su conocimiento de cómo funciona el sistema operativo / lenguaje / marco subyacente para identificar una vulnerabilidad.
Es ampliamente aceptado que tener el código fuente público aumenta la seguridad al permitir que las personas bien intencionadas encuentren vulnerabilidades y las arreglen , o al menos le digan al desarrollador sobre ellas. Hay dos razones importantes por las que esto funciona:
Por supuesto, no funciona con proyectos favoritos que tienen pocos usuarios activos, pero tampoco es muy probable que sean atacados por un hacker.
fuente
En primer lugar, puede usar el control de versión (distribuido) sin hacer público el repositorio. Puede crear un repositorio en su computadora local y presionar / extraer desde otras computadoras. También puede cargar el repositorio (dándole más copias de seguridad y una colaboración más fácil) sin hacerlo público. GitHub ofrece repositorios privados por una tarifa, Bitbucket hace lo mismo y libera pequeños repositorios privados (5 personas o algo). Por supuesto, entonces no obtienes los otros beneficios que mencionaste.
El aspecto de seguridad es bastante pequeño. Hay muchos, muchos vectores de ataque que valen la pena y que se pueden probar fácilmente sin mirar el código fuente (del lado del servidor) (como estar atento a los parámetros GET y POST, verificar las cookies y el manejo de la sesión, agregar entradas que se deben escapar y verificar si lo son, etc.) Si eres vulnerable a cualquiera de ellos, un atacante determinado puede explotarlos razonablemente rápido sin mirar el código fuente. Los errores más oscuros y difíciles de explotar son (probablemente) también más difíciles de detectar en el código fuente, por lo que, nuevamente, no pierde mucho.
Por otro lado, hacerlo público y aceptar contribuciones puede atraer a personas que pueden detectar hazañas, sin un mal significado, y contarte sobre ellas (o incluso arreglarlas ellos mismos). Esto va doblemente si es realmente popular pero no eres un experto en seguridad (sin ofender, pero no suenas como uno; por ejemplo, no mencionaste la seguridad a través de la oscuridad y cómo tu preocupación no es un caso de eso) .
fuente
BitBucket tiene repositorios privados gratuitos y admite git y mercurial.
fuente
Dejando a un lado el tema de la seguridad y si hacer público su código lo mejoraría o no, puede configurar un sistema de control de fuente en su máquina usted mismo. En el caso de git es trivial, simplemente inicialice un repositorio local y ya está, pero configurar un SVN tampoco es una tarea desalentadora. Tal vez una o dos horas después de los tutoriales, si tiene poco conocimiento previo sobre cómo configurar SVN.
Por lo tanto, aún puede beneficiarse del control de fuente, independientemente de si termina utilizando un servicio en línea o no.
fuente
La mayoría de los ataques maliciosos se realizan de forma anónima. Alguna persona en Rusia ejecuta un script que escanea los hosts en busca de puertos abiertos, o lo que sea que tenga. Nadie va a verter explícitamente su código solo para encontrar una manera de piratear para hacer daño. No, a menos que realmente cabrees a alguien.
fuente