Tengo aplicaciones angulares y php alojadas en el mismo alojamiento compartido y se puede acceder a ellas desde el mismo dominio ejemplo.com. La aplicación php expone una API de descanso, y quiero que solo se pueda acceder a esta API desde la aplicación angular.
Ambas aplicaciones no tienen autenticación de usuario.
La mejor manera de hacerlo es colocar su backend en una subred privada a la que puede acceder el frontend angular a través de una ruta de red interna.
[ Your network /16 ] [ Public Subnet /24 ] [ Private Subnet /24 ] [Frontend] <- Route -> [Backend]Pero según su caso, está alojando ambos en la misma instancia de servidor que son públicos. Que la recomendación anterior no es aplicable. Como no puede restringirlo en la capa de red, puede buscar en la capa de aplicación y puede utilizar la extensión de configuración del servidor web como .htaccess, puede crear una regla que solo permita la solicitud de interfaz. Es una restricción de la capa de aplicación.
Como mencionó @Edcel Cabrera Vista, traté de restringir las llamadas en la capa de aplicación agregando reglas al archivo .htaccess, verificando en el archivo PHP si la IP del cliente entrante coincide con la IP de mi sitio web o localhost, agregando autorización básica. Ninguno de ellos funciona, porque la aplicación angular al final es solo un código JS de cliente que se ejecuta en el navegador del usuario, por lo que el usuario tiene control total sobre él y la IP del cliente siempre será la IP del usuario.
Al final me di cuenta de que podía hacer la representación HTML en el lado del servidor y devolver la página HTML lista al cliente. Por el momento que se adapte a mis necesidades.