Foros del Web » Programando para Internet » PHP »

Pregunta de Seguridad PHP

Estas en el tema de Pregunta de Seguridad PHP en el foro de PHP en Foros del Web. Que tal, Tengo un dominio y desarrollo todo en localhost y luego lo subo. Utilizo paso de variables por GET generalmente $_GET['mi_variable']. Desde una página ...
  #1 (permalink)  
Antiguo 21/09/2005, 08:00
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta de Seguridad PHP

Que tal,

Tengo un dominio y desarrollo todo en localhost y luego lo subo.

Utilizo paso de variables por GET generalmente $_GET['mi_variable'].

Desde una página que lista proveedores por ejemplo, puedo ver la información detallada pasando el id así:

Código PHP:
www.mi_dominio.com/pagina_de_detalle.php?id=2001 
y esto es lo típico, cuando inserto y cuando actualizo, etc.

La pregunta es:

Alguien desde otro dominio puede cargar datos en mis páginas o enviar valores?


Código PHP:
<form method="post" name="form1" 

action="http://www.mi_dominio.com/pagina_de_inserción.php" 

Y grabar valores en mi BD ???

Será posible? o es Paranoia.

Tengo el php.ini por default, solo he activado la GD.


Saludos.
  #2 (permalink)  
Antiguo 21/09/2005, 08:10
Avatar de sanjo  
Fecha de Ingreso: enero-2005
Mensajes: 404
Antigüedad: 19 años, 10 meses
Puntos: 0
si es posible, se recomienda siempre como uso seguro enb vez del método GET, el método POST <form method="POST" action="tupagina.php" ......></form>.

El get se suele usar cuando la información es irrelevante, además el paso de variables por URL queda muy feo para una web, pudiendose pasar los valores por el métodos por, y asi quedar la URL libre, no se si te servirá de algo, espero que si.
__________________
¿Quiere echarte unas risas y ver cosas espectaculares?
Nomeessentado.com
  #3 (permalink)  
Antiguo 21/09/2005, 09:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
Cuando pasas una variable por URL, cambiando el número de id en la página de destino, se obtiene la información de la página que corresponde a la id que has escrito.

Lo mismo se puede hacer mirando el código fuente de la página de origen y haciendo una página con sólo el formulario, ir poniendo la id con distinto valor y así vas viendo páginas. Pero esto es así también para las variable pasadas por POST.

En ambos casos, al recibir la variable id, la página de destino conecta a la BD y hace lo que está previsto, que suele ser un select de una tabla y la impresión de resultados.

Si la página de destino hace lo que comento, yo no veo grandes problemas a que la variable se la pases por GET.

En cambio, si la página de destino va a modificar la BD, entonces sí que hay problemas, pero yo los veo con ambos métodos. Pero para eso está la autentificación de usuarios, las sesiones y las cookies.

En definitiva, yo creo que todo depende de lo que haga la página de destino.
  #4 (permalink)  
Antiguo 21/09/2005, 09:54
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 19 años, 2 meses
Puntos: 0
Yo utilizo un sistema de validación de usuarios por sesiones.
  #5 (permalink)  
Antiguo 21/09/2005, 10:11
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 6 meses
Puntos: 0
Asegurate de que tu register global de php.ini este en OFF
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #6 (permalink)  
Antiguo 21/09/2005, 10:13
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Se supone que los array superglobales solucionan este problema, pues las variables no llegan desde fuera, sino que se crean en el servidor. Es decir, usar siempre $_POST o $_GET y tambien $_SERVER['HTTP_REFERER'] para asegurarse que determinada pagina o script ha llamado y pasado valores al script que manipula dichas variables.
  #7 (permalink)  
Antiguo 21/09/2005, 10:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por claudiovega
Se supone que los array superglobales solucionan este problema, pues las variables no llegan desde fuera, sino que se crean en el servidor. Es decir, usar siempre $_POST o $_GET y tambien $_SERVER['HTTP_REFERER'] para asegurarse que determinada pagina o script ha llamado y pasado valores al script que manipula dichas variables.
No, los arrays superglobales no solucionan el problema de "inyección remota" de datos .. sólo aseguran que entren por el método esperado .. sea GET o POST. Perfectamente con un formulario puedes simular GET o POST cara a tu otro servidor.

El uso del "HTTP_REFERE" tampoco es muy fiable. Como dato que se envia como cabecera HTTP entre la comunicación cliente-servidor .. es fácilmente alterable .. de hecho muchos proxys, firewall's y antivirus ocultan dicha información (no la entregan) .. así que en algúnos casos (usuarios que pasen por un proxy .. firewall .. etc) no vas a poder obtener dicha información .. y la conexión será completamente licita (vendrá de tu própio sitio).

Recomiendo usar sesiones .. iniciadas en tu script que contiene tu formulario el cual ataca a tu "proceso.php" y validado en proceso.php la existencia de la variable de sesión que creastes en tu formulario.php. Si entras directo a "proceso.php" .. tus variables de sesión no existiran y por ende tu validación cortará el proceso.

Un saludo,
  #8 (permalink)  
Antiguo 21/09/2005, 11:54
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
Nadie probo con $_SERVER['SERVER_NAME'] o $_SERVER['HTTP_HOST'] ??
eso no es fiable??
__________________
Internet Explorer SuckS
Download FireFox
  #9 (permalink)  
Antiguo 21/09/2005, 13:06
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 21 años, 6 meses
Puntos: 2
creo que la mejor opcion es usar, como dijo SIR.CARAJODIDA, la variable $_SERVER['HTTP_HOST']... simplemente debes colocar un if en el script que procesa (no en el formulario) el resultado y, de no coincidir el contenido de $_SERVER... con tu host simplemente no ejecutarlo.
__________________
I Love Programming...
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 21:59.