Recientemente he oído que la mayoría del código PHP es confidencial
Esto parece ser incorrecto. Al momento de la concesión, la mayoría de PHP está libre de errores y es legible para cualquier persona a la que se le distribuya.
porque si los atacantes conocen la estructura de su base de datos o la función hash utilizada para cifrar las contraseñas, hay mayores posibilidades de una violación.
También incorrecto. Ni la estructura de la base de datos, ninguna función hash es crítica en la arquitectura de la violación inicial. Pueden ser útiles después de una infracción, pero lo importante para generar el ataque inicial es el conocimiento de alguna falla o vulnerabilidad en el código del sitio.
Tener el código fuente puede ser útil para encontrar vulnerabilidades de seguridad (cf. Wordpress y los complementos de Joomla), no es realmente necesario. De hecho, la mayoría de las vulnerabilidades interesantes (Windows, Flash, Internet Explorer, Acrobat, etc.) se encuentran sin la ayuda del código fuente.
Hacer que su proyecto sea de Código Abierto hace que el código sea más fácil para que terceros lo auditen (con o sin su permiso) que debería conducir a un descubrimiento anterior de errores y vulnerabilidades, con la esperanza de que sean más rápidos y fáciles de parchar .
Suponiendo que su proyecto es lo suficientemente popular como para obtener una cantidad razonable de escrutinio, esto debería significar que es menos probable que su proyecto tenga vulnerabilidades de seguridad importantes una vez que se complete el período inicial de detección y revisión. Es difícil obtener buena información sobre esto, pero algunas pruebas sugieren que el software de código abierto popular tiene menos probabilidades de tener esas vulnerabilidades "durmientes" que están presentes y activas pero no publicadas durante décadas.