[PHP] Como hacer esto? con GET o POST request?

SikorZ

Vereis tengo un dedicado con una DB ahi, y me gustaria por seguridad crear una web de registro en un servidor ajeno que mande los datos de la cuenta a crear al script en el dedicado en si, y que este script sea el encargado de registrar la cuenta y asi el usuario ni si quiera intuya que su informacion esta siendo mandada a otro servidor. Asi evito abrir el puerto MSSQL del dedicado por seguridad.

La idea es tal que asi

1-Usuario entra a la web con el form para registrarse
2-Usuario mete datos y le pulsa a enviar
3-Script manda los datos al script puesto en el dedicado donde esta la DB
4-Script en el dedicado con la DB comprueba que la info sea buena y la introduce en la DB
5-El usuario no tiene ni idea de que el paso 3 y 4 ha pasado y simplemente se registra y recibe un mensaje de exito

Has

No se que probelma tienes.

Siempre que los datos que vayas a mandar son sensibles usa POST, ya que GET se puede ver y editar sin mucha complicación.

1 respuesta
SikorZ

#2 La complicacion es obvia, como mandar desde el registro los datos a otro script en OTRO server para que meta los datos y que el usuario no sepa del segundo server (que es donde esta la DB)

drount

Puedes usar el server donde se aloja la web como proxy y luego hacer un xml-rpc, sockets o de la forma que quieras.

Si no, en el action del form puedes referenciar a un servidor externo que recoja los datos y lo meta en la BD.

Si quieres hacerlo semi-transparente, puedes hacerlo por ajax desde el cliente.

Si realmente te preocupa tanto la seguridad espero que uses SSL en todas las conexiones.

1 respuesta
SikorZ

#4 Al poner el otro server como action redirigira al cliente a la web del otro server, que es justo lo que no quiero xD, quiero que mande los datos sin que el cliente sepa a donde va, o si quiera si se meuve de ahi

Podria hacerlo enviando datos por post y que el dedi los recoja, asi elcliente ni se entera, pero no logro hacerlo...

drount

Si quieres hacerlo facil y cutre, con AJAX pillas el form y lo envias al server de la DB y el cliente no se entera a no ser que se ponga a mirar el codigo JS.

1 respuesta
SikorZ

#6 Tiene que haber otra forma sin que deje rastro... xD, que lo haga el servidor, no con codigo cliente

drount

Lo que te digo, envíalo a server donde esta la web y desde allí haces una conexión http o https al server de la DB.

1 respuesta
SikorZ

#8 No te comprendo..

De todas formas si asi se entera el cliente no me sirve>.<... aunque sea mirando codigo

1 respuesta
dagavi

Suponiendo que todo es accesible vía web (aunque no lo haría así), el primer script simplemente tendría que hacer una llamada a la URL del segundo script (que está en otro server) pasándole los argumentos que le han pasado a el. El script recibirá el resultado y este se lo retornará al usuario. El usuario no se ha enterado de que el script real de registro está en otro server.

Si los parámetros se los pasas al segundo script por GET supongo que con un simple "wget URL?arg1=data1&...&argN=dataN" bastaría, en otro caso podrías tirar de curl.

1 respuesta
drount

#9 El form lo envías al server donde esta la web normal y desde el script donde esta la web haces una conexión al server donde esta la base de datos. De esta forma es totalmente transparente.

1 respuesta
SikorZ

#10 No puedo usar exec() para el wget en el host...

#11 Esa es la idea, es lo que pregunto en #1, y no se hacerlo xDDD

Al final teneis el script que he acabado usando

Has

No comprendo por que se complican tanto con ejecutar un script en otro servidor y pasar los datos por cURL.

Lo único que tienes que hacer es simplemente mencionar la otra base de datos en la configuración de tu script y ya está.

1 respuesta
SikorZ

#13 La idea de eso, es que si por casualidad alguien tiene acceso al script:

  1. No pueda conectar remotamente a la DB, ya que no admitire conexiones fuera del localhost
  2. Nadie vea el servidor web en el servidor de la DB

El codigo que he usado al final y que funciona es el siguiente:

<?php
$ch = curl_init("www.LAWEBQUEQUIERAS.com");
$data = array('id' => $_POST['id'], 'pw' => $_POST['pw'], 'email' => $_POST['email']);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
curl_exec ($ch);
curl_close ($ch);
?>

Por si a alguien le resulta util

1 respuesta
Soltrac

#14 No es la idónea, ya que no puedes interactuar con la respuesta, pero bueno, si para lo que necesitas lo vale porque si me pongo a pensar creo no se puede sniffear esa "redirección".

2 respuestas
SikorZ

#15 No se puede ya lo he probado ya que lo que hago es usar el servidor web como un simple proxy, nadie deberia darse cuenta del cambio de servidor, y si se dan, no habra forma de saber cual es el servidor. Ademas que en el dedicado he filtrado la IP para que SOLO ese servidor web pueda acceder, por lo tanto si intenta acceder alguien mas porque hayan descubierto la ip y puerto les dara un bonito mensaje de Forbidden

LOc0

#15 Meeeeeeeeeeeeeeeeeeeec!

Sí puedes "interactuar" con la respuesta de curl_exec (si no, menuda gracia xD).

    <?php
    $ch = curl_init(" http://www.LAWEBQUEQUIERAS.com");
    $data = array('id' => $_POST['id'], 'pw' => $_POST['pw'], 'email' => $_POST['email']);
    curl_setopt ($ch, CURLOPT_POST, 1);

curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$respuesta = curl_exec ($ch); //Lo que sea que devuelva el server está aquí.

   curl_close ($ch);
    ?>

FastCurl -> http://www.mediavida.com/foro/9/fastcurl-388430

<?php 
require_once('FastCurl.inc');
$ch=new FastCurl('http://www.LAWEBQUEQUIERAS.com');
$ch->enable_post(array('id' => $_POST['id'], 'pw' => $_POST['pw'], 'email' => $_POST['email']));
$res=$ch->exec();
unset($ch);
?>

Por cierto #1, ¿la base de datos no puede configurarse para conectar desde otro servidor?

Salu2 ;)

1 respuesta
Soltrac

#17 Va va, q yo no trabajo en PHP, solo vi su ejemplo y vi q no interactuaba xDDDD.

JuAn4k4

Que yo sepa no necesitas abrir los puertos del mysql para conectarte desde el mismo servidor, que es donde está tu script. ¿No?

Usuario abre browser.
browser manda get al servidor
servidor (script) manda la página del formulario
usuario ve formulario en el browser
usuario rellena datos
usuario pulsa enviar
browser envia petición post a tu server (script)
tu script que está conectado a la BD por šlocalhostš accede a la base de datos

mysql no necesita tener los puertos abiertos

Usuarios habituales

  • JuAn4k4
  • Soltrac
  • LOc0
  • SikorZ
  • Has
  • drount
  • dagavi