De hecho ningún archivo de tu aplicación debería ser accesible, sólo uno: index.php
La idea, es que la carpeta /app (o como quieras llamarle) debes ubicarla fuera del document_root, y así en dicho index.php que sí está en el document_root sólo incluyes el script principal de tu aplicación.
Ahora, respecto a todas tus dudas de Composer te sugiero las revises en el sitio oficial de Composer, ahí se explica su funcionamiento, restricciones, etc.
Y ya con eso solucionas tu problema.