Foros del Web » Programando para Internet » PHP »

"Blindar" una página con datos de conexion

Estas en el tema de "Blindar" una página con datos de conexion en el foro de PHP en Foros del Web. Bueno, espero que alguien me pueda guiar en esta duda que tengo y que no puedo encontrarle solucion =) Voy a tratar de ponerlo como ...
  #1 (permalink)  
Antiguo 02/10/2006, 16:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
"Blindar" una página con datos de conexion

Bueno, espero que alguien me pueda guiar en esta duda que tengo y que no puedo encontrarle solucion =)

Voy a tratar de ponerlo como un ejemplo para que quede mas claro:

Yo tengo una pagina (llamemosla "index.php") que llama a una página ("datos_conexion.php") que contiene los datos de la coneccion al servidor MySQL

Código PHP:
<?
$MYSQL
["host"]= "localhost";
$MYSQL["user"]= "user";
$MYSQL["pass"]= "pass";
?>
Bien, hasta ahora todo bien. Yo, para hacer la conección haría esto desde el archivo index.php

Código PHP:
<?
include ("datos_conexion.php");
$linkmysql_connect($MYSQL["host"],$MYSQL["user"],$MYSQL["pass"]);
//Acciones
mysql_close($link);
?>
Perfecto. Funciona de mil maravillas.

Pero me surge una duda. Que pasaría si alguien hiciera esto desde un servidor cualquiera?

Código PHP:
<?
include ("http://www.miweb.com/datos_conexion.php");
echo 
"$MYSQL[host]<br />$MYSQL[user]<br />$MYSQL[pass]";
?>
Bueno, supuestamente mostraria los datos de mi conección.

Una solución posible sería poner la coneccion en cada uno de los archivos sin llamar a uno externo. El problema es que lo necesito para un sistema que posee un archivo "instalador", y desde allí se definen los datos de conección, por lo que se guardan en el archivo "datos_conexion.php"


¿Como podría hacer para que solo pueda accederse al archivo desde mi web? Tenía pensado usar $_SERVER["HTTP_REFERER"] pero no todos los navegadores brindan esa informacion

¿Que tecnicas usan ustedes?

Se agradecen sus respuestas. Y si no podes darme la solucion, igual te agradesco por haberte tomado la molestia de haber leido mi problema

Saludos!
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #2 (permalink)  
Antiguo 02/10/2006, 17:57
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Puedes cambiar los permisos CHMOD de tu archivo de conexion y buala !!
http://www.ignside.net/man/ftp/chmod.php
  #3 (permalink)  
Antiguo 02/10/2006, 17:58
Avatar de renton  
Fecha de Ingreso: enero-2004
Ubicación: BCN (PPCC)
Mensajes: 573
Antigüedad: 20 años, 3 meses
Puntos: 1
Cita:
Iniciado por alejoluc Ver Mensaje
¿Como podría hacer para que solo pueda accederse al archivo desde mi web? Tenía pensado usar $_SERVER["HTTP_REFERER"] pero no todos los navegadores brindan esa informacion
???

TODOS los navegadores dan esa opción, o mejor dicho ninguno: PHP es un lenguaje de servidor, que como su nombre indica se ejecuta en el servidor, así que el navegador aquí no tiene nada que ver. (Si fuera JavaScript sería otra cosa)
Además, $_SERVER["HTTP_REFERER"] sólo te indicará la URL desde donde saltó el navegador a tu página. Si el usuario escribe en el navegador directamente tu web, la variable $_SERVER["HTTP_REFERER"] estará vacía.

Yo en tu caso simplemente utilizaría $_SERVER["SERVER_NAME"], que te devuelve la URL de tu dominio (www.miweb.com). Con eso tendrás más q suficiente.
__________________
"No et limites a contemplar aquestes hores que ara venen, baixa al carrer i participa.
No podran res davant un poble unit, alegre i combatiu!!"
  #4 (permalink)  
Antiguo 02/10/2006, 18:04
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
OK muchas gracias por las respuestas.

Con respecto a lo de $_SERVER["HTTP_REFERER"], lei por muchos lados que algunos navegadores no dan esa info.

Y por ejemplo, yo tenia un archivo en la carpeta "carpeta1" que se llamaba "prueba.php", que imprimia el valor de la variable $_SERVER["HTTP_REFERER"]. Si lo ejecutaba desde su ubicacion, me devolvia la URL con "carpeta1", pero si lo incluia desde un archivo en "carpeta2", me daba la URL con "carpeta2"

Saludos y gracias nuevamente
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #5 (permalink)  
Antiguo 03/10/2006, 08:48
 
Fecha de Ingreso: agosto-2006
Mensajes: 78
Antigüedad: 17 años, 8 meses
Puntos: 0
Cita:
Iniciado por alejoluc Ver Mensaje
OK muchas gracias por las respuestas.

Con respecto a lo de $_SERVER["HTTP_REFERER"], lei por muchos lados que algunos navegadores no dan esa info.

Y por ejemplo, yo tenia un archivo en la carpeta "carpeta1" que se llamaba "prueba.php", que imprimia el valor de la variable $_SERVER["HTTP_REFERER"]. Si lo ejecutaba desde su ubicacion, me devolvia la URL con "carpeta1", pero si lo incluia desde un archivo en "carpeta2", me daba la URL con "carpeta2"

Saludos y gracias nuevamente
Bueno yo de ti, utilizaria mas los CHMOD dar permisos al fichero de conexion, mas que utilizar $_SERVER["HTTP_REFERER"], ya que no siempre hay compatibilidades.

Aunque tambien no se si te pica la curiosidad de saber si alguien con esos datos y password podria conectarse a tu base de datos, entonces es mejor que crees un usuario que solo pueda leer los datos en tu SQL.

Pienso que no hay un ciencia cierta de asegurar todo, a más seguridad mas tiempo de programacion, más complicaciones.

saludos
  #6 (permalink)  
Antiguo 03/10/2006, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Que tal alejoluc,

Si lees en la documentacion de PHP, cuando haces tu un include remoto (via http), PHP hace un GET Request al servidor donde esta hospeado tu archivo, cual es la ventaja de esto?, que puedes reestringir el acceso a ciertos archivos para que no sean leidos, mas que de forma local, es decir:

Código:
/ <- root de tu aplicacion
/archivo1.php <- Accesible via http://miserver/archivo1.php
/archivo2.php <- igual
/config <- Directorio en el cual restringimos el acceso via directivas de Apache, al incluir "config.php" via http:// PHP nos mandara un header 403 No autorizado.
/config/config.php
/config/.htaccess
y en tu .htaccess pones un simple codigo como:
Código:
RewriteEngine On

RewriteRule config/ index.php [F]
Eso mandara el header de Fordibben y no podran incluir tu file via remota.
  #7 (permalink)  
Antiguo 03/10/2006, 11:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
Muchas gracias por las respuestas, voy a intentar :)
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #8 (permalink)  
Antiguo 03/10/2006, 11:36
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
Disculpen pque vuelva a postear...pero que permisos (CHMOD) me recomiendan usar para mi archivo?
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
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 04:59.