Pregunta:
Fecha: 20-01-2017 20:02:56
(En Español)
Ejemplo: server.com/perfil.controller.PHP
Votos: 0 - Respuestas: 6 - Vistas: 24 Compartir en: Google Facebook Twitter LinkedIn Link
¿Cómo impedir que se abran un archivo .php?[Resuelta]
Que tal compañeros, estoy realizando un proyecto con la arquitectura mvc y no quiero que al ingresar a una url (la dirección del archivo de mi controlador) esta se abra.Ejemplo: server.com/perfil.controller.PHP
Votos: 0 - Respuestas: 6 - Vistas: 24 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 22-01-2017 12:23:34 mm vos queres que en la url no se muestre el .php y se muestre algo como: server.com/perfil ?
si es así, tenes que utilizar htaccess con mod rewrite si es que tenes un servidor en apache Votos: 0 - Link respuesta -
Fecha: 24-01-2017 21:13:12 Hola David, deberás controlar cuando se esta solicitando dicha url, una vez que lo detectas haces un redirect a donde tu quieras (por ejemplo a la home) para evitar que se ejecute la acción del controlador, algo como:
header ("Location: index.php"); exit;
Espero que mi respuesta te sea de ayuda, comenta como te fue.
Saludos y buen código! Votos: 2 - Link respuesta -
Fecha: 26-01-2017 23:59:36 Además de las sugerencias de los compañeros hay un punto que se les escapa a muchos desarrolladores cuando utilizan un framework y que se convierte en un agujero de seguridad, sobre todo en desarrollos de programadores empíricos o Jr's que no están familiarizados con todo el ambiente alrededor de una aplicación o página web.
Muchos frameworks crean un esqueleto de la aplicación y, desgraciadamente, dejan/dejaban que el programador simplemente copie y pegue el esqueleto de la aplicación en la carpeta pública del sitio.
Por ejemplo supongamos que tienes tu aplicación con la siguiente estructura:
/ruta/miAplicacion
- Controllers
- Views
- Models
- .htaccess
- index.php
Muchos generalmente al publicar el sitio copiarán la carpeta miAplicacion y la pegarán en el servidor:
/var/www/miAplicacion
Y luego en la configuración del servidor indican que la raíz del sitio es: /var/www/mi Aplicacion
Esto expone al mundo TODO el contenido de tu sitio (incluidos los archivos PHP de controladores, vistas, modelos, etc.). Sí, los puedes proteger con archivos de configuración del servidor (.htaccess para Apache, como ahora hacen la mayoría de los frameworks) y cuando alguien quiera ver los archivos o la carpeta devolver un 403 Forbidden pero esa respuesta pudiera ser lo que necesita un atacante para orquestar un ataque y vulnerar nuestra aplicación. Esto es un escenario en el que cae tu pregunta.
Cómo resolverlo?
1. Déjalo así
La solución más sencilla pero no la mejor
Algo muy importante saber es que muchos frameworks implementan medidas de seguridad para proteger tus archivos. Si tu sitio no maneja información sensible y no está regulado por alguna entidad gubernamental entonces puedes dejar tu sitio corriendo tal cual sin preocuparte de más.
2. Utiliza los archivos .htaccess (o equivalentes)
Esta es una solución de nivel medio de complejidad
Con esto puedes restringir el acceso público a las carpetas que quieras.
Ojo que esta opción puede no estar habilitada
3. Configura tu servidor y pon la aplicación en otra carpeta
Si quieres hacer tu sitio un pelo más seguro (que no mucho) pues verás que para muchos no es fácil pues a veces el proveedor de hosting sólo da acceso limitado a las carpetas que puedes acceder y las configuraciones de tu ambiente. Si es tu servidor y te sientes cómodo con configuración del servidor y Linux entonces es relativamente sencillo y rápido.
En el caso de una aplicación MVC que utiliza FrontController lo mejor es que la carpeta de tu aplicación esté en una ubicación NO pública y luego en la carpeta pública colocas tu archivo index.php (FrontController) que será el que conozca la ubicación de los recursos de tu aplicación. Aquí debes ser cuidadoso con los permisos del servidor para que tu aplicación corra adecuadamente.
Al final te quedaría algo así:
/var/ubicacion/no/publica/miAplicacion ->Todo tu código
/var/www/miAplicacion/index.php -> FrontController que va a funcionar como bootstrap de tu aplicación y tu servidor web utilizará esta carpeta como raíz de tu sitio
De esta manera te ahorras crear archivos .htaccess y cuando alguien navegue a http://servidor/miAplicacion/Controllers/mainController.php recibirá un 404 en lugar de un 403
Y así no expones ningún archivo :)
Ojo que los recursos (imágenes, hojas de estilo, javascripts y otros) SÍ deben ir en la carpeta pública si quieres reducir la carga y complejidad de tu FrontController.
Muchos frameworks ya consideran estos escenarios y ofrecen la carpeta public (ZF), web (Symfony), etc. que es la única que debería ser pública.
Espero esta info te sea de ayuda.
Saludos Votos: 4 - Link respuesta -
Fecha: 29-01-2017 07:34:34 Lo mas sencillo sin lugar a dudas es un fichero .htaccess dentro de cada carpeta que no quieres que tenga acceso.
ese fichero solo debe contener la linea
deny from all
No recuerdo si debe ir la primera letra en mayúscula.
Te dejo el link de apache donde te explica todas las opciones. Este procedimiento es el mas sencillo y así nadie puede acceder a tu carpeta de controladores o de modelos.
Recuerda ese fichero con esa linea debe ir en cada carpeta a la que no quieras que se acceda directamente desde el navegador. Votos: 0 - Link respuesta -
Fecha: 29-01-2017 07:35:28 Se me olvido enviarte el link
https://httpd.apache.org/docs/2.2/howto/access.html Votos: 0 - Link respuesta -
Fecha: 29-01-2017 09:56:10 Muchas gracias por la ayuda.. Hay muy buenas respuestas Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
