Foros del Web » Programando para Internet » PHP »

Seguridad en una Web

Estas en el tema de Seguridad en una Web en el foro de PHP en Foros del Web. Hola a todos: Tengo un servidor apache montado sobre linux funcionando correctamente. Supongamos que tengo el índice de la web en: var/www/html/servidor/index.html Dentro de este ...
  #1 (permalink)  
Antiguo 21/08/2004, 17:29
 
Fecha de Ingreso: agosto-2004
Mensajes: 4
Antigüedad: 19 años, 8 meses
Puntos: 0
Seguridad en una Web

Hola a todos:

Tengo un servidor apache montado sobre linux funcionando correctamente. Supongamos que tengo el índice de la web en:
var/www/html/servidor/index.html

Dentro de este directorio, tengo subdirectorios, tales como:
var/www/html/servidor/directorio1/ficheros
var/www/html/servidor/directorio2/ficheros
var/www/html/servidor/directorio3/ficheros
......

Si pongo en la url var/www/html/servidor/index.html, se carga. Perfecto!!!, pero cuado pongo var/www/html/servidor/directorio1/ficheros, tambien (esto es lo que no quiero).

Me gustaría bloquear los subdirectorios (directorio1, 2, 3, ...) para que solo se tenga acceso a través del index, y que no puedan ir directamente a los ficheros “destino”.

Lo mejor que he conseguido actualmente es usando fpassthru(), (y redirigir para la apertura de un fichero situado por ejemplo en "var/www/html/ficheros_ocultos") pero a la hora de redirigir, perfecto, pero solo me reconoce lo que está bajo html. Algo como un simple

Código PHP:
echo "imprime esto"
ya no me lo acepta y no me imprime nada....

Por favor, alguien me puede ayudar o orientar???

Un saludo

Slimer
  #2 (permalink)  
Antiguo 21/08/2004, 17:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Si pongo en la url var/www/html/servidor/index.html, se carga. Perfecto!!!, pero cuado pongo var/www/html/servidor/directorio1/ficheros, tambien (esto es lo que no quiero).
¿Te refieres que al ir a tu: http://www.nose.tal/directorio1/ficheros .. ves el listado de archivos que contiene tu directorio "ficheros"?


Cita:
Lo mejor que he conseguido actualmente es usando fpassthru(), (y redirigir para la apertura de un fichero situado por ejemplo en "var/www/html/ficheros_ocultos") pero a la hora de redirigir, perfecto, pero solo me reconoce lo que está bajo html. Algo como un simple
Al usar tu "fpassthru()" tan sólo lees el archivo (tal cual) y lo entregas al buffer de salida .. pero eso no lo ejecuta.


Un saludo,
  #3 (permalink)  
Antiguo 21/08/2004, 19:55
 
Fecha de Ingreso: agosto-2004
Mensajes: 4
Antigüedad: 19 años, 8 meses
Puntos: 0
Exclamación

Hola:

Voy a intentar explicarme mejor:

Supongamos que tengo una web, situada el indice en la página

var/www/html/servidor/index.html

Dentro de este indice, tengo varios hipervinculos, los cuales se redirigen a...

var/www/html/servidor/directorio1/ficheros.php
var/www/html/servidor/directorio2/ficheros.php
var/www/html/servidor/directorio3/ficheros.php

no es que vea el contenido de los ficheros (como si fuera un explorador), sino que veo la páginas correctamente (cuando pincho en un hipervinculo, que este vinculado, por ejemplo al destino del directorio2/ficheros.php, se ve todo perfecto.)

Hasta aqui toda la web funciona correctamente, pero lo que me interesaria ...:
-que no aparezca en la URL conforme se vaya navegando en la dirección url (que aparezca siempre por ejemplo "http://www.mipagina.eso" y que no vaya apareciendo...
http://www.mipagina.eso/directorio1/ficheros.php
http://www.mipagina.eso/directorio2/ficheros.php
http://www.mipagina.eso/directorio3/ficheros.php
En este caso,,, si pusieramos en la URL alguna de esas direcciones, directamente se cargaría (eso no lo quiero).

Hasta el momento, tambien lo he medio-conseguido anulando las barras de herramientas, menus, etc... (solo tengo el marco exterior), pero me surge el problema que en el historico si que aparecen las direcciones "completas" y se pueden llamar desde el exterior.

Con "fpassthru()" había conseguido mis propósitos. No veo en la URL ni en el histórico los sub-apartados de la web, y no son accesibles desde la URL (tienes que ir desde el indice por obligación.) Eso es lo que quiero. Que no se pueda ir directamente a un destino porque no sea "accesible" por la URL. El problema como comenté anteriormente, es que no me reconoce codigo alguno ignorandolo directamente... (logicamente quiero que me lo interprete!!!).

Resumiendo, quiero ocultar las páginas para que no sean accesibles desde la URL directamente.

Nota: una vez comenzada una sesion, ya podríamos visitar todos los directorios directamente, por lo que no me sirve en este proyecto...

********** se os ocurre algo??? *************


He intentado explicarlo lo mas detalladamente que puedo, pero tanto, a lo mejor lo he liado!!! Espero haberme explicado mejor ahora, si no es asi, intentaré hacerlo mejor la próxima vez...


Muy agradecido de antemano por todos sus comentarios,,,

Un saludo

Slimer

Última edición por Slimer; 21/08/2004 a las 20:59
  #4 (permalink)  
Antiguo 21/08/2004, 23:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Hasta aqui toda la web funciona correctamente, pero lo que me interesaria ...:
-que no aparezca en la URL conforme se vaya navegando en la dirección url (que aparezca siempre por ejemplo "http://www.mipagina.eso" y que no vaya apareciendo...
http://www.mipagina.eso/directorio1/ficheros.php
http://www.mipagina.eso/directorio2/ficheros.php
http://www.mipagina.eso/directorio3/ficheros.php
En este caso,,, si pusieramos en la URL alguna de esas direcciones, directamente se cargaría (eso no lo quiero).
En principio eso lo puedes resolver con un frame (de HTML) (pero en historiales se vería el URL que apuntó) o con técnicas de mod_rewrite (módulo de Apache) para reescribir el URL (sería lo más transparente para tus actuales scripts ..)

Cita:
Con "fpassthru()" había conseguido mis propósitos. No veo en la URL ni en el histórico los sub-apartados de la web, y no son accesibles desde la URL (tienes que ir desde el indice por obligación.) Eso es lo que quiero. Que no se pueda ir directamente a un destino porque no sea "accesible" por la URL. El problema como comenté anteriormente, es que no me reconoce codigo alguno ignorandolo directamente... (logicamnte quiero que me lo interprete!!!).
Ya te he comentado (y puedes leer el manual oficial de PHP al respecto) que fpassthru() .. o readfile() .. o fopen() .. etc .. abren tu archivo tal cual es .. no lo interpretan.

En tal caso deberías usar:
include()
www.php.net/include

que con una ruta absoluta (/var/www......) va a incluir tu código en el punto que lo llames (de tu index.php por ejemplo) y lo va a ejecutar como un todo (un sólo script).

Cita:
Nota: una vez comenzada una sesion, ya podríamos visitar todos los directorios directamente, por lo que no me sirve en este proyecto...
Bueno .. la sesión en sí no es más que un sitio donde almacenar variables por un tiempo y que sólo pertenecen al cliente que las crea por ese tiempo (lo mismo que las cookies pero estas (las sesiones) se almacenan en el servidor).. Ahora, tu lógica es la que tendrá que validar vía el valor de esas variables que uses desde donde viene.

Por ejemplo: (en psudo-código):

index.php -> creas variable de sesión pasa_por_indice = SI

y en las subsiguientes ficheros.php validas si la variable de sesión "pasa_por_indice" tiene el valor SI .. Si entras directo a ficheros.php sin pasar por tu indice.php .. (que crea esa variable de sesión) NO estará definida y por ende tu validación no dejará ejecutar el resto de ficheros.php ..

Una vez que llegas a directorio1/ficheros.php . puedes eliminar esa sesión ("pasa_por_indice") .. si salto a ficheros.php desde ahí pero el de directorio2/ .. la variable de sesión mencionada que usas para validar .. NO existirá por qué la borrastes.

Y .. como todas estas variables están en la sesión que se crea en el servidor .. no corres el peligro de que sean "alteradas" como por ejemplo sucedería si intentases hacer lo mismo bajo una cookie o peor por el URL (en links).

Un saludo,

Última edición por Cluster; 22/08/2004 a las 00:22
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:37.